|
| 1 | +cmake_minimum_required(VERSION 3.15) |
| 2 | +project(CoverageControlCore VERSION 0.3 LANGUAGES CUDA CXX) |
| 3 | + |
| 4 | +set(CMAKE_CXX_STANDARD 17) |
| 5 | +set(CMAKE_CXX_STANDARD_REQUIRED True) |
| 6 | +set(CMAKE_COLOR_DIAGNOSTICS ON) |
| 7 | + |
| 8 | +include(CheckCXXCompilerFlag) |
| 9 | +include(GNUInstallDirs) |
| 10 | + |
| 11 | +find_package(OpenMP REQUIRED) |
| 12 | +find_package(Eigen3 REQUIRED) |
| 13 | +find_package(yaml-cpp REQUIRED) |
| 14 | +find_package(CGAL REQUIRED) |
| 15 | +find_package(GeographicLib REQUIRED) |
| 16 | + |
| 17 | +configure_file(cmake/CoverageControlCoreConfig.h.in CoverageControlCoreConfig.h) |
| 18 | + |
| 19 | +add_library(compiler_flags INTERFACE) |
| 20 | +target_compile_features(compiler_flags INTERFACE cxx_std_17) |
| 21 | + |
| 22 | +set(gcc_like_cxx "$<COMPILE_LANG_AND_ID:CXX,ARMClang,AppleClang,Clang,GNU,LCC>") |
| 23 | +set(msvc_cxx "$<COMPILE_LANG_AND_ID:CXX,MSVC>") |
| 24 | +target_compile_options(compiler_flags INTERFACE |
| 25 | + "$<${gcc_like_cxx}:$<BUILD_INTERFACE:-Wall;-Wextra;-Wshadow;-Wformat=2;-Wunused;-pedantic>>" |
| 26 | + "$<${msvc_cxx}:$<BUILD_INTERFACE:-W3>>" |
| 27 | +) |
| 28 | + |
| 29 | + |
| 30 | +################################# |
| 31 | +## CoverageControlCore library ## |
| 32 | +################################# |
| 33 | + |
| 34 | +set(sources_list |
| 35 | + generate_world_map.cu |
| 36 | + polygon_utils.cpp |
| 37 | + parameters.cpp |
| 38 | + voronoi.cpp |
| 39 | + coverage_system.cpp |
| 40 | + plotter.cpp |
| 41 | + extern/Hungarian.cpp) |
| 42 | +list(TRANSFORM sources_list PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/src/") |
| 43 | + |
| 44 | +set(dependencies_list Eigen3::Eigen m stdc++fs yaml-cpp OpenMP::OpenMP_CXX CGAL::CGAL pthread ${GeographicLib_LIBRARIES} boost_iostreams boost_system boost_filesystem) |
| 45 | + |
| 46 | +add_library(CoverageControl_core SHARED ${sources_list}) |
| 47 | + |
| 48 | +add_library(CoverageControlCore INTERFACE) |
| 49 | +target_include_directories(CoverageControlCore INTERFACE |
| 50 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 51 | + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) |
| 52 | +target_link_libraries(CoverageControlCore INTERFACE ${dependencies_list} CoverageControl_core) |
| 53 | + |
| 54 | +target_include_directories(CoverageControl_core PRIVATE "${PROJECT_BINARY_DIR}") |
| 55 | +target_link_libraries(CoverageControl_core PRIVATE ${dependencies_list} compiler_flags) |
| 56 | +set_target_properties(CoverageControl_core PROPERTIES CUDA_ARCHITECTURES native POSITION_INDEPENDENT_CODE ON) |
| 57 | + |
| 58 | +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 59 | + |
| 60 | +install(TARGETS CoverageControl_core CoverageControlCore EXPORT CoverageControlCoreTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 61 | + |
| 62 | +set(CMAKEPACKAGE_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/CoverageControlCore) |
| 63 | + |
| 64 | +include(CMakePackageConfigHelpers) |
| 65 | +# generate the config file that includes the exports |
| 66 | +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in |
| 67 | + ${CMAKE_CURRENT_BINARY_DIR}/CoverageControlCoreConfig.cmake |
| 68 | + INSTALL_DESTINATION "${CMAKEPACKAGE_INSTALL_DIR}" |
| 69 | + NO_SET_AND_CHECK_MACRO |
| 70 | + NO_CHECK_REQUIRED_COMPONENTS_MACRO |
| 71 | +) |
| 72 | + |
| 73 | +write_basic_package_version_file( |
| 74 | + "${CMAKE_CURRENT_BINARY_DIR}/CoverageControlCoreConfigVersion.cmake" |
| 75 | + VERSION "${CoverageControlCore_VERSION_MAJOR}.${CoverageControlCore_VERSION_MINOR}" |
| 76 | + COMPATIBILITY AnyNewerVersion |
| 77 | +) |
| 78 | + |
| 79 | +export (PACKAGE CoverageControlCore) |
| 80 | +install(EXPORT CoverageControlCoreTargets FILE CoverageControlCoreTargets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CoverageControlCore) |
| 81 | + |
| 82 | +install(FILES |
| 83 | + ${CMAKE_CURRENT_BINARY_DIR}/CoverageControlCoreConfig.cmake |
| 84 | + ${CMAKE_CURRENT_BINARY_DIR}/CoverageControlCoreConfigVersion.cmake |
| 85 | + DESTINATION ${CMAKEPACKAGE_INSTALL_DIR} |
| 86 | +) |
0 commit comments