@@ -4,8 +4,23 @@ set(CMAKE_CXX_STANDARD 17)
44
55
66list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake)
7+
8+
9+ #--------------------------------------------------------------------------
10+ # refresh deps gitmodules
11+ #--------------------------------------------------------------------------
12+
713include (external_tools)
814
15+ execute_process (COMMAND git submodule update --init --recursive
16+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
17+ RESULT_VARIABLE GIT_SUBMOD_RESULT
18+ )
19+ if (NOT GIT_SUBMOD_RESULT EQUAL "0" )
20+ message (FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT} , please checkout submodules" )
21+ endif ()
22+
23+
924#--------------------------------------------------------------------------
1025# library
1126#--------------------------------------------------------------------------
@@ -40,48 +55,117 @@ target_precompile_headers(${SHARED_LIB_NAME} PUBLIC src/diffcheckpch.hh)
4055# 3rd party
4156#--------------------------------------------------------------------------
4257
58+
59+
60+
61+
4362# 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])
44- # glfw --------------------------------------------------------------
45- add_subdirectory (deps/glfw)
46- target_link_libraries (${SHARED_LIB_NAME} PUBLIC glfw ${GLFW_LIBRARIES} )
47- target_include_directories (${SHARED_LIB_NAME} PUBLIC ${GLFW_INCLUDE_DIRS} )
48- target_link_libraries (${SHARED_LIB_NAME} INTERFACE glfw ${GLFW_LIBRARIES} )
49- target_include_directories (${SHARED_LIB_NAME} INTERFACE ${GLFW_INCLUDE_DIRS} )
63+ # glfw (pre-build binaries) --------------------------------------------------------------
64+
65+ # TODO: add binaries to deps
66+ set (GLFW_VERSION 3_3_4) # 3.3.4
67+ set (GLFW_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glfw/win/${GLFW_VERSION} /lib-vc2019)
68+ set (GLFW_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glfw/win/${GLFW_VERSION} /include )
69+
70+ add_library (glfw3 SHARED IMPORTED )
71+ set_target_properties (glfw3 PROPERTIES
72+ IMPORTED_LOCATION ${GLFW_LIB_PATH} /glfw3.dll
73+ IMPORTED_IMPLIB ${GLFW_LIB_PATH} /glfw3.lib
74+ INTERFACE_INCLUDE_DIRECTORIES ${GLFW_INCLUDE_PATH}
75+ )
76+
77+ # target_link_directories(${SHARED_LIB_NAME} PUBLIC ${GLFW_LIB_PATH})
78+ # target_link_directories(${SHARED_LIB_NAME} INTERFACE ${GLFW_LIB_PATH})
79+
80+ target_link_libraries (${SHARED_LIB_NAME} PUBLIC glfw3)
81+ target_link_libraries (${SHARED_LIB_NAME} INTERFACE glfw3)
82+ target_include_directories (${SHARED_LIB_NAME} PUBLIC ${GLFW_INCLUDE_PATH} )
83+ target_include_directories (${SHARED_LIB_NAME} INTERFACE ${GLFW_INCLUDE_PATH} )
84+
85+ # #find openGL
86+ # find_package(OpenGL REQUIRED)
87+ # target_link_libraries(${SHARED_LIB_NAME} PUBLIC OpenGL::GL)
88+ # target_link_libraries(${SHARED_LIB_NAME} INTERFACE OpenGL::GL)
89+
5090
5191# TODO: replace with add_subdirectory() instead of binaries
52- # glew --------------------------------------------------------------
92+ # glew (pre-build binaries) --------------------------------------------------------------
5393set (GLEW_VERSION 2_2_0) # 2.2.0
54- set (GLEW_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glew/win/${GLEW_VERSION} /bin/Release/x64/glew32)
94+ set (GLEW_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glew/win/${GLEW_VERSION} /bin/Release/x64)
95+ set (GLEW_STATIC_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glew/win/${GLEW_VERSION} /lib/Release/x64)
5596set (GLEW_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/glew/win/${GLEW_VERSION} /include )
5697
57- target_link_libraries (${SHARED_LIB_NAME} PUBLIC ${GLEW_LIB_PATH} )
58- target_link_libraries (${SHARED_LIB_NAME} INTERFACE ${GLEW_LIB_PATH} )
98+ add_library (glew32 SHARED IMPORTED )
99+ set_target_properties (glew32 PROPERTIES
100+ IMPORTED_LOCATION ${GLEW_LIB_PATH} /glew32.dll
101+ IMPORTED_IMPLIB ${GLEW_STATIC_LIB_PATH} /glew32.lib
102+ INTERFACE_INCLUDE_DIRECTORIES ${GLEW_INCLUDE_PATH}
103+ )
104+
105+
106+ # target_link_directories(${SHARED_LIB_NAME} PUBLIC ${GLEW_STATIC_LIB_PATH})
107+ # target_link_directories(${SHARED_LIB_NAME} INTERFACE ${GLEW_STATIC_LIB_PATH})
108+ # target_link_directories(${SHARED_LIB_NAME} PUBLIC ${GLEW_LIB_PATH})
109+ # target_link_directories(${SHARED_LIB_NAME} INTERFACE ${GLEW_LIB_PATH})
110+
111+ target_link_libraries (${SHARED_LIB_NAME} PUBLIC glew32)
112+ target_link_libraries (${SHARED_LIB_NAME} INTERFACE glew32)
59113target_include_directories (${SHARED_LIB_NAME} PUBLIC ${GLEW_INCLUDE_PATH} )
60114target_include_directories (${SHARED_LIB_NAME} INTERFACE ${GLEW_INCLUDE_PATH} )
61115
62- # fmt --------------------------------------------------------------
116+ # fmt (header-only) --------------------------------------------------------------
63117add_subdirectory (deps/fmt)
64118
65119target_link_libraries (${SHARED_LIB_NAME} PUBLIC fmt::fmt)
66120target_link_libraries (${SHARED_LIB_NAME} INTERFACE fmt::fmt)
67121
68- # Eigen --------------------------------------------------------------
122+ # Eigen (header-only) --------------------------------------------------------------
69123add_subdirectory (deps/eigen)
70124
71125target_link_libraries (${SHARED_LIB_NAME} PUBLIC Eigen3::Eigen)
72126target_link_libraries (${SHARED_LIB_NAME} INTERFACE Eigen3::Eigen)
73127
74- # Open3D --------------------------------------------------------------
128+ # Open3D (pre-build binaries) --------------------------------------------------------------
75129set (O3D_VERSION 0_17) # 0.17.0
76- set (OPEN3D_SHAREDLIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/open3d/win/${O3D_VERSION} /bin/Open3D)
130+ set (OPEN3D_SHAREDLIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/open3d/win/${O3D_VERSION} /bin)
131+ set (OPEN3D_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/open3d/win/${O3D_VERSION} /lib)
77132set (OPEN3D_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /deps/open3d/win/${O3D_VERSION} /include )
78133
79- target_link_libraries (${SHARED_LIB_NAME} PUBLIC ${OPEN3D_SHAREDLIB_PATH} )
80- target_link_libraries (${SHARED_LIB_NAME} INTERFACE ${OPEN3D_SHAREDLIB_PATH} )
134+ add_library (Open3D SHARED IMPORTED )
135+ set_target_properties (Open3D PROPERTIES
136+ IMPORTED_LOCATION ${OPEN3D_SHAREDLIB_PATH} /Open3D.dll
137+ IMPORTED_IMPLIB ${OPEN3D_LIB_PATH} /Open3D.lib
138+ INTERFACE_INCLUDE_DIRECTORIES ${OPEN3D_INCLUDE_PATH}
139+ )
140+
141+ # target_link_directories(${SHARED_LIB_NAME} PUBLIC ${OPEN3D_LIB_PATH})
142+ # target_link_directories(${SHARED_LIB_NAME} INTERFACE ${OPEN3D_LIB_PATH})
143+ # # target_link_directories(${SHARED_LIB_NAME} PUBLIC ${OPEN3D_SHAREDLIB_PATH})
144+ # # target_link_directories(${SHARED_LIB_NAME} INTERFACE ${OPEN3D_SHAREDLIB_PATH})
145+
146+ target_link_libraries (${SHARED_LIB_NAME} PUBLIC Open3D)
147+ target_link_libraries (${SHARED_LIB_NAME} INTERFACE Open3D)
81148target_include_directories (${SHARED_LIB_NAME} PUBLIC ${OPEN3D_INCLUDE_PATH} )
82149target_include_directories (${SHARED_LIB_NAME} INTERFACE ${OPEN3D_INCLUDE_PATH} )
83150
84151
152+
153+
154+ # copy all the dlls to the bin directory
155+ # List of libraries that DiffCheck is linked against
156+ set (DEPENDENCIES glfw3 glew32 Open3D)
157+
158+ foreach (DEP_LIB ${DEPENDENCIES} )
159+ add_custom_command (TARGET ${SHARED_LIB_NAME} POST_BUILD
160+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
161+ $<TARGET_FILE:${DEP_LIB} >
162+ $<TARGET_FILE_DIR:${SHARED_LIB_NAME} >
163+ )
164+ endforeach ()
165+
166+
167+
168+
85169#--------------------------------------------------------------------------
86170# executable
87171#--------------------------------------------------------------------------
@@ -100,6 +184,7 @@ target_include_directories(${APP_NAME_EXE}
100184 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /src
101185 )
102186
187+
103188#--------------------------------------------------------------------------
104189# Tests
105190#--------------------------------------------------------------------------
0 commit comments