1
1
cmake_minimum_required (VERSION 3.16. )
2
2
project (diffCheck VERSION 1.3.0 LANGUAGES CXX C )
3
3
set (CMAKE_CXX_STANDARD 17 )
4
+ # set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
5
+
6
+ # Force usage of libc++ and proper visibility on macOS
7
+ # For some reason, without this, there will be a segfault in test
8
+ if (APPLE )
9
+ add_compile_options (-stdlib=libc++ -fvisibility=hidden -Wall )
10
+ add_link_options (-stdlib=libc++ )
11
+ endif ()
12
+
13
+ # # Set rpath for Python extension loading on macOS
14
+ # set(CMAKE_MACOSX_RPATH ON)
4
15
5
16
list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake )
6
17
@@ -40,27 +51,31 @@ endif()
40
51
set (SHARED_LIB_NAME diffCheck )
41
52
42
53
file (GLOB_RECURSE SOURCES_LIB
43
- src/diffCheck.hh # diffCheck interface
44
- src/diffCheck/*.cc src/diffCheck/*.hh # diffCheck src
45
- )
46
-
47
- add_library (${SHARED_LIB_NAME} SHARED ${SOURCES_LIB} )
54
+ src/diffCheck.hh # diffCheck interface
55
+ src/diffCheck/*.cc src/diffCheck/*.hh # diffCheck src
56
+ src/diffCheck/*/*.cc src/diffCheck/*/*.hh # diffCheck submodules
57
+ )
58
+
59
+ # print the sources founded
60
+ add_library (${SHARED_LIB_NAME} STATIC ${SOURCES_LIB} )
61
+
62
+ # if (WIN32)
63
+ # set_target_properties(${SHARED_LIB_NAME} PROPERTIES
64
+ # WINDOWS_EXPORT_ALL_SYMBOLS TRUE
65
+ # )
66
+ # endif()
67
+ set_target_properties (${SHARED_LIB_NAME} PROPERTIES
68
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
69
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
70
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
71
+ )
48
72
49
- if (WIN32 )
50
- set_target_properties (${SHARED_LIB_NAME} PROPERTIES
51
- WINDOWS_EXPORT_ALL_SYMBOLS TRUE
52
- )
53
- endif ()
54
- set_target_properties (${SHARED_LIB_NAME} PROPERTIES
55
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin # for dll
56
- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib # for lib
57
- )
58
73
target_include_directories (${SHARED_LIB_NAME}
59
74
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /src
60
- )
75
+ )
61
76
62
77
#set the MD_DynamicRelease flag for MSVC since we are compiling with /MD for py wrap
63
- set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL" )
78
+ # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
64
79
65
80
66
81
#--------------------------------------------------------------------------
@@ -73,29 +88,31 @@ add_subdirectory(deps/eigen)
73
88
target_link_libraries (${SHARED_LIB_NAME} PUBLIC Eigen3::Eigen )
74
89
75
90
# Open3D (pre-built binaries) ---------------------------------------------
76
- download_submodule_project (open3d )
77
- set (Open3D_DIR ${CMAKE_CURRENT_SOURCE_DIR} /deps/open3d/win/0_18/CMake )
78
- find_package (Open3D 0.18.0 REQUIRED )
91
+ # download_submodule_project(open3d)
92
+ # set(Open3D_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/open3d/win/0_18/CMake)
93
+ # find_package(Open3D 0.18.0 REQUIRED)
94
+
95
+ # # print the version debug or release of the package
96
+ # message(STATUS "Open3D version: ${Open3D_VERSION}"
97
+ # "Open3D include dir: ${Open3D_INCLUDE_DIRS}"
98
+ # "Open3D library dir: ${Open3D_LIBRARIES}")
79
99
80
- # print the version debug or release of the package
81
- message (STATUS "Open3D version: ${Open3D_VERSION} "
82
- "Open3D include dir: ${Open3D_INCLUDE_DIRS} "
83
- "Open3D library dir: ${Open3D_LIBRARIES} " )
84
100
101
+ find_package (Open3D HINTS ${CMAKE_INSTALL_PREFIX} /lib/cmake )
85
102
# link the release version of the open3d library
86
103
target_link_libraries (${SHARED_LIB_NAME} PUBLIC Open3D::Open3D )
87
104
88
105
# On Windows if BUILD_SHARED_LIBS is enabled, copy .dll files to the executable directory
89
- if (WIN32 )
90
- get_target_property (open3d_type Open3D::Open3D TYPE )
91
- if (open3d_type STREQUAL "SHARED_LIBRARY" )
92
- message (STATUS "Copying Open3D.dll to ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_BUILD_TYPE} " )
93
- add_custom_command (TARGET ${SHARED_LIB_NAME} POST_BUILD
94
- COMMAND ${CMAKE_COMMAND} -E copy
95
- $< TARGET_FILE:Open3D::Open3D>
96
- $< TARGET_FILE_DIR:${SHARED_LIB_NAME} > )
97
- endif ()
98
- endif ()
106
+ # if(WIN32)
107
+ # get_target_property(open3d_type Open3D::Open3D TYPE)
108
+ # if(open3d_type STREQUAL "SHARED_LIBRARY")
109
+ # message(STATUS "Copying Open3D.dll to ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
110
+ # add_custom_command(TARGET ${SHARED_LIB_NAME} POST_BUILD
111
+ # COMMAND ${CMAKE_COMMAND} -E copy
112
+ # $<TARGET_FILE:Open3D::Open3D>
113
+ # $<TARGET_FILE_DIR:${SHARED_LIB_NAME}>)
114
+ # endif()
115
+ # endif()
99
116
100
117
# Boost (header only) -----------------------------------------------------
101
118
download_submodule_project (boost )
@@ -116,28 +133,30 @@ target_link_libraries(${SHARED_LIB_NAME} PUBLIC loguru::loguru)
116
133
#--------------------------------------------------------------------------
117
134
# executable for prototyping
118
135
#--------------------------------------------------------------------------
119
- set (APP_NAME_EXE diffCheckApp )
136
+ # set(APP_NAME_EXE diffCheckApp)
120
137
121
- add_executable (${APP_NAME_EXE} src/diffCheckApp.cc )
138
+ # add_executable(${APP_NAME_EXE} src/diffCheckApp.cc)
122
139
123
- set_target_properties (${APP_NAME_EXE} PROPERTIES
124
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin
125
- )
140
+ # set_target_properties(${APP_NAME_EXE} PROPERTIES
141
+ # RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
142
+ # )
126
143
127
- target_link_libraries (${APP_NAME_EXE} ${SHARED_LIB_NAME} )
144
+ # target_link_libraries(${APP_NAME_EXE} ${SHARED_LIB_NAME})
128
145
129
- target_include_directories (${APP_NAME_EXE}
130
- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /src
131
- )
146
+ # target_include_directories(${APP_NAME_EXE}
147
+ # PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src
148
+ # )
132
149
133
150
#--------------------------------------------------------------------------
134
151
# pybind11
135
152
#--------------------------------------------------------------------------
153
+ add_definitions (-D_GLIBCXX_DEBUG )
154
+
136
155
if (BUILD_PYTHON_MODULE )
137
156
set (PYBINDMODULE_NAME diffcheck_bindings )
138
- set (PYPI_DIR ${CMAKE_CURRENT_SOURCE_DIR} /src/gh/diffCheck/diffCheck )
139
- set (TARGET_DLL_PYPI_DIR ${CMAKE_CURRENT_SOURCE_DIR} /src/gh/diffCheck/diffCheck/dlls )
140
- set (SPHINX_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR} /doc )
157
+ # set(PYPI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/gh/diffCheck/diffCheck)
158
+ # set(TARGET_DLL_PYPI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/gh/diffCheck/diffCheck/dlls)
159
+ # set(SPHINX_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc)
141
160
142
161
download_submodule_project (pybind11 )
143
162
add_subdirectory (deps/pybind11 )
@@ -151,27 +170,40 @@ if (BUILD_PYTHON_MODULE)
151
170
152
171
set (PYBIND11_PYTHON_VERSION 3.9.10 )
153
172
154
- pybind11_add_module (${PYBINDMODULE_NAME} src/diffCheckBindings.cc )
173
+ pybind11_add_module (${PYBINDMODULE_NAME}
174
+ MODULE
175
+ src/diffCheckBindings.cc
176
+ )
155
177
156
- target_link_libraries (${PYBINDMODULE_NAME} PUBLIC ${SHARED_LIB_NAME} )
157
178
target_include_directories (${PYBINDMODULE_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /src )
179
+ target_link_libraries (${PYBINDMODULE_NAME} PUBLIC ${SHARED_LIB_NAME} )
158
180
159
181
# copy the pyd file to the pypi directory
160
- add_custom_command (TARGET ${PYBINDMODULE_NAME} POST_BUILD
161
- COMMAND ${CMAKE_COMMAND} -E copy
162
- $< TARGET_FILE:${PYBINDMODULE_NAME} >
163
- ${PYPI_DIR}
164
- )
165
- copy_dlls (${TARGET_DLL_PYPI_DIR} ${PYBINDMODULE_NAME} )
166
- # copy the pyd/dlls for the sphinx documentation
167
- add_custom_command (TARGET ${PYBINDMODULE_NAME} POST_BUILD
168
- COMMAND ${CMAKE_COMMAND} -E copy
169
- $< TARGET_FILE:${PYBINDMODULE_NAME} >
170
- ${SPHINX_DOC_DIR}
171
- )
172
- copy_dlls (${SPHINX_DOC_DIR} ${PYBINDMODULE_NAME} )
182
+ # add_custom_command(TARGET ${PYBINDMODULE_NAME} POST_BUILD
183
+ # COMMAND ${CMAKE_COMMAND} -E copy
184
+ # $<TARGET_FILE:${PYBINDMODULE_NAME}>
185
+ # ${PYPI_DIR}
186
+ # )
187
+ # copy_dlls(${TARGET_DLL_PYPI_DIR} ${PYBINDMODULE_NAME})
188
+ # # copy the pyd/dlls for the sphinx documentation
189
+ # add_custom_command(TARGET ${PYBINDMODULE_NAME} POST_BUILD
190
+ # COMMAND ${CMAKE_COMMAND} -E copy
191
+ # $<TARGET_FILE:${PYBINDMODULE_NAME}>
192
+ # ${SPHINX_DOC_DIR}
193
+ # )
194
+ # copy_dlls(${SPHINX_DOC_DIR} ${PYBINDMODULE_NAME})
173
195
endif ()
174
196
197
+ # install the diffCheck shared library to the system path
198
+ install (TARGETS ${SHARED_LIB_NAME}
199
+ LIBRARY DESTINATION lib
200
+ ARCHIVE DESTINATION lib
201
+ RUNTIME DESTINATION bin
202
+ )
203
+
204
+
205
+
206
+
175
207
#--------------------------------------------------------------------------
176
208
# Tests
177
209
#--------------------------------------------------------------------------
0 commit comments