mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Use find module to link against OpenMP
Depending on the compiler in use, linking against OpenMP may require passing specific compiler flags instead of linking against a library. Use the CMake OpenMP find module to abstract OpenMP activation. Change-Id: Ib43f576ac12e2c5e9598e9586df3dfa018e9c08b
This commit is contained in:
@@ -180,6 +180,7 @@ find_dependency(Threads)
|
||||
|
||||
# Optional dependencies
|
||||
@SuiteSparse_DEPENDENCY@
|
||||
@OpenMP_DEPENDENCY@
|
||||
|
||||
# As imported CMake targets are not re-exported when a dependent target is
|
||||
# exported, we must invoke find_package(XXX) here to reload the definition
|
||||
|
||||
@@ -33,11 +33,14 @@
|
||||
if (CERES_THREADING_MODEL STREQUAL "CXX_THREADS")
|
||||
set(CERES_PARALLEL_FOR_SRC parallel_for_cxx.cc thread_pool.cc)
|
||||
elseif (CERES_THREADING_MODEL STREQUAL "OPENMP")
|
||||
# OpenMP requires linking to the corresponding library.
|
||||
find_package(OpenMP REQUIRED COMPONENTS CXX)
|
||||
|
||||
set(CERES_PARALLEL_FOR_SRC parallel_for_openmp.cc)
|
||||
if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
# OpenMP in GCC requires the GNU OpenMP library.
|
||||
list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES gomp)
|
||||
endif()
|
||||
list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES OpenMP::OpenMP_CXX)
|
||||
|
||||
# Make dependency visible to the parent CMakeLists.txt
|
||||
set(OpenMP_DEPENDENCY "find_dependency (OpenMP ${OpenMP_CXX_VERSION} COMPONENTS CXX)" PARENT_SCOPE)
|
||||
elseif (CERES_THREADING_MODEL STREQUAL "NO_THREADS")
|
||||
set(CERES_PARALLEL_FOR_SRC parallel_for_nothreads.cc)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user