Skip to content

Commit d0bdd62

Browse files
committed
WIP-CAP: decent version of cmake, needs refinement
1 parent 8829694 commit d0bdd62

File tree

2 files changed

+19
-78
lines changed

2 files changed

+19
-78
lines changed

CMakeLists.txt

Lines changed: 18 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,22 @@ cmake_minimum_required(VERSION 3.16.)
22
project(DiffCheck VERSION 1.0.0 LANGUAGES CXX C)
33
set(CMAKE_CXX_STANDARD 17)
44

5-
65
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
76

8-
9-
#--------------------------------------------------------------------------
10-
# refresh deps gitmodules
11-
#--------------------------------------------------------------------------
12-
7+
# import the custom cmake utilities funcs
138
include(external_tools)
149

15-
#FIXME: here we need to use the external function to update the submodules to the
16-
# latest commit
10+
# do a submodule init if not done already
1711
execute_process(COMMAND git submodule update --init --recursive
1812
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
1913
RESULT_VARIABLE GIT_SUBMOD_RESULT
2014
)
21-
# do a git pull to get the latest commit
22-
execute_process(COMMAND git pull
23-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
24-
RESULT_VARIABLE GIT_PULL_RESULT
25-
)
2615
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
2716
message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
2817
endif()
2918

30-
3119
#--------------------------------------------------------------------------
32-
# library
20+
# diffCheck dynamic lib
3321
#--------------------------------------------------------------------------
3422

3523
set(SHARED_LIB_NAME diffCheck)
@@ -51,27 +39,17 @@ endif()
5139
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin # for dll
5240
# ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin # for lib
5341
)
54-
5542
target_include_directories(${SHARED_LIB_NAME}
5643
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src
5744
)
5845

59-
# target_precompile_headers(${SHARED_LIB_NAME} PUBLIC src/diffcheckpch.hh)
60-
6146
#--------------------------------------------------------------------------
6247
# 3rd party
6348
#--------------------------------------------------------------------------
64-
65-
66-
67-
68-
69-
70-
71-
# FIXME: problems with glfw (LINK : fatal error LNK1104: cannot open file '..\deps\glew\win\2_2_0\bin\Release\x64\glew32.obj' [F:\diffCheck\build\diffCheck.vcxproj])
72-
# glfw (pre-build binaries) --------------------------------------------------------------
73-
49+
# glfw (pre-build binaries) -----------------------------------------------
7450
# TODO: add binaries to deps
51+
# Get the latest commit on branch
52+
download_submodule_project(glfw)
7553
set(GLFW_VERSION 3_3_4) # 3.3.4
7654
set(GLFW_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/glfw/win/${GLFW_VERSION}/lib-vc2019)
7755
set(GLFW_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/glfw/win/${GLFW_VERSION}/include)
@@ -87,7 +65,8 @@ target_link_libraries(${SHARED_LIB_NAME} PUBLIC glfw3)
8765
target_include_directories(${SHARED_LIB_NAME} PUBLIC ${GLFW_INCLUDE_PATH})
8866

8967
# TODO: replace with add_subdirectory() instead of binaries
90-
# glew (pre-build binaries) --------------------------------------------------------------
68+
# glew (pre-build binaries) ----------------------------------------------
69+
download_submodule_project(glew)
9170
set(GLEW_VERSION 2_2_0) # 2.2.0
9271
set(GLEW_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/glew/win/${GLEW_VERSION}/bin/Release/x64)
9372
set(GLEW_STATIC_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/glew/win/${GLEW_VERSION}/lib/Release/x64)
@@ -100,69 +79,38 @@ set_target_properties(glew32 PROPERTIES
10079
INTERFACE_INCLUDE_DIRECTORIES ${GLEW_INCLUDE_PATH}
10180
)
10281

103-
104-
# target_link_directories(${SHARED_LIB_NAME} PUBLIC ${GLEW_STATIC_LIB_PATH})
105-
# target_link_directories(${SHARED_LIB_NAME} INTERFACE ${GLEW_STATIC_LIB_PATH})
106-
# target_link_directories(${SHARED_LIB_NAME} PUBLIC ${GLEW_LIB_PATH})
107-
# target_link_directories(${SHARED_LIB_NAME} INTERFACE ${GLEW_LIB_PATH})
108-
10982
target_link_libraries(${SHARED_LIB_NAME} PUBLIC glew32)
110-
# target_link_libraries(${SHARED_LIB_NAME} INTERFACE glew32)
11183
target_include_directories(${SHARED_LIB_NAME} PUBLIC ${GLEW_INCLUDE_PATH})
112-
# target_include_directories(${SHARED_LIB_NAME} INTERFACE ${GLEW_INCLUDE_PATH})
11384

114-
# fmt (header-only)--------------------------------------------------------------
85+
# fmt (header-only)------------------------------------------------------
86+
download_submodule_project(fmt)
11587
add_subdirectory(deps/fmt)
11688

11789
target_link_libraries(${SHARED_LIB_NAME} PUBLIC fmt::fmt)
118-
# target_link_libraries(${SHARED_LIB_NAME} INTERFACE fmt::fmt)
11990

120-
# Eigen (header-only)--------------------------------------------------------------
91+
# Eigen (header-only)----------------------------------------------------
92+
download_submodule_project(eigen)
12193
add_subdirectory(deps/eigen)
12294

12395
target_link_libraries(${SHARED_LIB_NAME} PUBLIC Eigen3::Eigen)
124-
# target_link_libraries(${SHARED_LIB_NAME} INTERFACE Eigen3::Eigen)
125-
12696

127-
128-
# FIXME: no need to specify opnegl because by system and fetched automatically
129-
# # # OpenGL (from system) --------------------------------------------------------------
97+
# # # OpenGL (from system) ----------------------------------------------
13098
find_package(OpenGL REQUIRED)
13199
target_link_libraries(${SHARED_LIB_NAME} PUBLIC OpenGL::GL)
132100
target_link_libraries(${SHARED_LIB_NAME} INTERFACE OpenGL::GL)
133101

134-
135-
136-
137-
138-
139-
140-
# HERE'S THE PROBLEEEEEM <<<<<<
141-
# Libigl (header-only) --------------------------------------------------------------
142-
102+
# Libigl (header-only) --------------------------------------------------
103+
download_submodule_project(libigl)
143104
# all dependecies for libigl: https://libigl.github.io/third-party/
144105
# set compiling flags for libigl
145106
set(LIBIGL_USE_STATIC_LIBRARY OFF)
146107
set(LIBIGL_GLFW ON)
147108
add_subdirectory(deps/libigl)
148109

149110
target_link_libraries(${SHARED_LIB_NAME} PUBLIC igl::glfw)
150-
# target_link_libraries(${SHARED_LIB_NAME} INTERFACE igl::core igl::opengl igl::opengl_glfw)
151-
152-
# set(LIBIGL_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/libigl/include)
153-
# target_include_directories(${SHARED_LIB_NAME} PUBLIC ${LIBIGL_INCLUDE_PATH})
154-
# target_include_directories(${SHARED_LIB_NAME} INTERFACE ${LIBIGL_INCLUDE_PATH})
155-
156-
157-
158-
159111

160-
161-
162-
163-
164-
165-
# Open3D (pre-build binaries /headless not visuals)--------------------------------------------------------------
112+
# Open3D (pre-build binaries /headless not visuals)-----------------------
113+
download_submodule_project(open3d)
166114
set(O3D_VERSION 0_17) # 0.17.0
167115
set(OPEN3D_SHAREDLIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/open3d/win/${O3D_VERSION}/bin)
168116
set(OPEN3D_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/deps/open3d/win/${O3D_VERSION}/lib)
@@ -176,13 +124,9 @@ set_target_properties(Open3D PROPERTIES
176124
)
177125

178126
target_link_libraries(${SHARED_LIB_NAME} PUBLIC Open3D)
179-
# target_link_libraries(${SHARED_LIB_NAME} INTERFACE Open3D)
180127
target_include_directories(${SHARED_LIB_NAME} PUBLIC ${OPEN3D_INCLUDE_PATH})
181-
# target_include_directories(${SHARED_LIB_NAME} INTERFACE ${OPEN3D_INCLUDE_PATH})
182-
183-
184-
185128

129+
# ------------------------------------------------------------------------
186130
# copy all the dlls to the bin directory to make dll accessible
187131
# List of dynamic libraries that DiffCheck is linked against
188132
set(DEPENDENCIES glfw3 glew32 Open3D)
@@ -195,11 +139,9 @@ foreach(DEP_LIB ${DEPENDENCIES})
195139
)
196140
endforeach()
197141

198-
199142
#--------------------------------------------------------------------------
200143
# executable
201144
#--------------------------------------------------------------------------
202-
203145
set(APP_NAME_EXE diffCheckApp)
204146

205147
add_executable(${APP_NAME_EXE} src/diffCheckApp.cc)
@@ -214,7 +156,6 @@ target_include_directories(${APP_NAME_EXE}
214156
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src
215157
)
216158

217-
218159
#--------------------------------------------------------------------------
219160
# Tests
220161
#--------------------------------------------------------------------------

deps/eigen

Submodule eigen updated from 8b101ad to d3cd312

0 commit comments

Comments
 (0)