@@ -218,24 +218,71 @@ include_directories(
218218# as system headers.
219219include_directories (SYSTEM ${EIGEN_INCLUDE_DIRS} )
220220
221+
222+ set (THEIA_USE_EXTERNAL_CEREAL OFF CACHE BOOL "Use a system Cereal library" )
223+ set (THEIA_USE_EXTERNAL_FLANN OFF CACHE BOOL "Use a system Flann library" )
224+
221225# build Third party libraries included in distro.
222- add_subdirectory (libraries)
223- include_directories (
224- libraries
225- libraries/spectra
226- ${akaze_SOURCE_DIR}
227- ${akaze_INCLUDE_DIR}
228- ${cereal_SOURCE_DIR}
229- ${cereal_SOURCE_DIR} /include
230- ${flann_SOURCE_DIR}
231- ${flann_SOURCE_DIR} /src/cpp
232- ${gtest_SOURCE_DIR} /include
233- ${gtest_SOURCE_DIR}
234- ${optimo_SOURCE_DIR}
235- ${statx_SOURCE_DIR}
236- ${stlplus3_SOURCE_DIR}
237- ${vlfeat_SOURCE_DIR}
238- ${visual_sfm_SOURCE_DIR} )
226+ if (${BUILD_TESTING} )
227+ add_subdirectory (libraries/gtest)
228+ include_directories (${gtest_SOURCE_DIR} /include ${gtest_SOURCE_DIR} )
229+ endif (${BUILD_TESTING} )
230+
231+ # AKAZE feature extractor.
232+ add_subdirectory (libraries/akaze)
233+ include_directories (${akaze_SOURCE_DIR} ${akaze_INCLUDE_DIR} )
234+
235+ # Cereal for portable IO.
236+ if (NOT THEIA_USE_EXTERNAL_CEREAL)
237+ add_subdirectory (libraries/cereal)
238+
239+ include_directories (${cereal_SOURCE_DIR} ${cereal_SOURCE_DIR} /include )
240+ set (THEIA_INTERNAL_CEREAL_LIB ${THEIA_INTERNAL_LIB_PREFIX} /cereal ${THEIA_INTERNAL_LIB_PREFIX} /cereal/include )
241+ else ()
242+ find_package (cereal REQUIRED)
243+
244+ set (_THEIA_CEREAL_LIBRARIES cereal)
245+ endif ()
246+
247+ # Flann for fast approximate nearest neighbor searches.
248+ if (NOT THEIA_USE_EXTERNAL_FLANN)
249+ add_subdirectory (libraries/flann)
250+
251+ include_directories (${flann_SOURCE_DIR} ${flann_SOURCE_DIR} /src/cpp)
252+ set (_THEIA_FLANN_LIBRARIES flann_cpp)
253+ set (THEIA_INTERNAL_FLANN_LIB ${THEIA_INTERNAL_LIB_PREFIX} /flann)
254+ else ()
255+ find_package (Flann REQUIRED)
256+
257+ include_directories (${FLANN_INCLUDE_DIR} )
258+ set (_THEIA_FLANN_LIBRARIES ${FLANN_LIBRARY} )
259+ endif ()
260+
261+ # Add Optimo.
262+ add_subdirectory (libraries/optimo)
263+ include_directories (${optimo_SOURCE_DIR} )
264+
265+ # Add Spectra.
266+ include_directories (libraries/spectra)
267+
268+ # Add Statx.
269+ add_subdirectory (libraries/statx)
270+ include_directories (${statx_SOURCE_DIR} )
271+
272+ # STLPlus for filepath tools.
273+ add_subdirectory (libraries/stlplus3)
274+ include_directories (${stlplus3_SOURCE_DIR} )
275+
276+ # Add VLFeat.
277+ add_subdirectory (libraries/vlfeat)
278+ include_directories (${vlfeat_SOURCE_DIR} )
279+
280+ # Add VisualSfM files.
281+ add_subdirectory (libraries/visual_sfm)
282+ include_directories (${visual_sfm_SOURCE_DIR} )
283+
284+ include_directories (libraries)
285+
239286
240287list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /cmake" )
241288include (OptimizeTheiaCompilerFlags)
@@ -260,7 +307,19 @@ install(FILES ${THEIA_HDRS} DESTINATION include/theia)
260307file (GLOB_RECURSE THEIA_INTERNAL_HDRS ${CMAKE_SOURCE_DIR} /src/theia/*.h)
261308install (DIRECTORY src/theia/ DESTINATION include /theia FILES_MATCHING PATTERN "*.h" )
262309
263- install (DIRECTORY libraries/ DESTINATION include /theia/libraries FILES_MATCHING PATTERN "*.h*" )
310+ install (DIRECTORY libraries/akaze/ DESTINATION include /theia/libraries/akaze FILES_MATCHING PATTERN "*.h*" )
311+ if (NOT THEIA_USE_EXTERNAL_CEREAL)
312+ install (DIRECTORY libraries/cereal/ DESTINATION include /theia/libraries/cereal FILES_MATCHING PATTERN "*.h*" )
313+ endif ()
314+ if (NOT THEIA_USE_EXTERNAL_FLANN)
315+ install (DIRECTORY libraries/flann/ DESTINATION include /theia/libraries/flann FILES_MATCHING PATTERN "*.h*" )
316+ endif ()
317+ install (DIRECTORY libraries/optimo/ DESTINATION include /theia/libraries/optimo FILES_MATCHING PATTERN "*.h*" )
318+ install (DIRECTORY libraries/spectra/ DESTINATION include /theia/libraries/spectra FILES_MATCHING PATTERN "*.h*" )
319+ install (DIRECTORY libraries/statx/ DESTINATION include /theia/libraries/statx FILES_MATCHING PATTERN "*.h*" )
320+ install (DIRECTORY libraries/stlplus3/ DESTINATION include /theia/libraries/stlplus3 FILES_MATCHING PATTERN "*.h*" )
321+ install (DIRECTORY libraries/visual_sfm/ DESTINATION include /theia/libraries/visual_sfm FILES_MATCHING PATTERN "*.h*" )
322+ install (DIRECTORY libraries/vlfeat/ DESTINATION include /theia/libraries/vlfeat FILES_MATCHING PATTERN "*.h*" )
264323
265324# Add an uninstall target to remove all installed files.
266325configure_file ("${CMAKE_SOURCE_DIR} /cmake/uninstall.cmake.in"
@@ -320,8 +379,9 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/TheiaConfigVersion.cmake.in"
320379install (FILES "${CMAKE_CURRENT_BINARY_DIR} /TheiaConfig.cmake"
321380 "${CMAKE_CURRENT_BINARY_DIR} /TheiaConfigVersion.cmake"
322381 "${CMAKE_SOURCE_DIR} /cmake/FindEigen.cmake"
323- "${CMAKE_SOURCE_DIR} /cmake/FindGlog .cmake"
382+ "${CMAKE_SOURCE_DIR} /cmake/FindFlann .cmake"
324383 "${CMAKE_SOURCE_DIR} /cmake/FindGflags.cmake"
325- "${CMAKE_SOURCE_DIR} /cmake/FindOpenImageIO.cmake"
384+ "${CMAKE_SOURCE_DIR} /cmake/FindGlog.cmake"
385+ "${CMAKE_SOURCE_DIR} /cmake/FindOpenImageIO.cmake"
326386 "${CMAKE_SOURCE_DIR} /cmake/FindSuiteSparse.cmake"
327387 DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
0 commit comments