diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt index e6b633e4b..a15eb95c4 100644 --- a/c/CMakeLists.txt +++ b/c/CMakeLists.txt @@ -5,6 +5,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake" "${CMAKE_CURRENT_LIST_DI option(I_KNOW_WHAT_I_AM_DOING_AND_HOW_DANGEROUS_IT_IS__LIBSBP_DISABLE_CRC_VALIDATION "Disable all CRC validation in Libsbp" OFF) set(SWIFT_CXX_STANDARD 17 CACHE STRING "Default C++ version for all swift targets") +include(CMakePackageConfigHelpers) include(GNUInstallDirs) include(CCache) include(SwiftCmakeOptions) diff --git a/c/src/CMakeLists.txt b/c/src/CMakeLists.txt index 840883208..dc59feffa 100644 --- a/c/src/CMakeLists.txt +++ b/c/src/CMakeLists.txt @@ -78,9 +78,26 @@ install( RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/libsbp/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libsbp) export(EXPORT sbp-export NAMESPACE swiftnav:: FILE ${PROJECT_BINARY_DIR}/LibSbpImport.cmake) + +install( + EXPORT sbp-export + DESTINATION ${CMAKE_INSTALL_DATADIR}/libsbp/cmake + NAMESPACE swiftnav:: +) + +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/libsbpConfig.cmake.in + libsbpConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR} +) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/libsbpConfig.cmake" + DESTINATION ${CMAKE_INSTALL_DATADIR}/libsbp/cmake +) diff --git a/c/src/libsbpConfig.cmake.in b/c/src/libsbpConfig.cmake.in new file mode 100644 index 000000000..6213cc575 --- /dev/null +++ b/c/src/libsbpConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/sbp-export.cmake") diff --git a/c/test_package/CMakeLists.txt b/c/test_package/CMakeLists.txt index d6c0be07d..4bc0e7dd8 100644 --- a/c/test_package/CMakeLists.txt +++ b/c/test_package/CMakeLists.txt @@ -7,24 +7,14 @@ if (NOT EXISTS ${SBP_FILE} OR NOT IS_ABSOLUTE ${SBP_FILE}) message(FATAL_ERROR "SBP_FILE variable (\"${SBP_FILE}\") needs to point to an absolute valid SBP file") endif() -find_library(SBP_LIBRARY sbp) -if (NOT SBP_LIBRARY) - message(FATAL_ERROR "SBP library was not found") -endif() - -find_path(SBP_INCLUDE_DIRS libsbp) -if (NOT SBP_INCLUDE_DIRS) - message(FATAL_ERROR "SBP header folder was not found") -endif() +find_package(libsbp CONFIG REQUIRED) add_executable(libsbp_c api.c) target_compile_features(libsbp_c PRIVATE c_std_11) -target_link_libraries(libsbp_c PRIVATE ${SBP_LIBRARY}) -target_include_directories(libsbp_c PRIVATE ${SBP_INCLUDE_DIRS}) +target_link_libraries(libsbp_c PRIVATE swiftnav::sbp) target_compile_definitions(libsbp_c PRIVATE SBP_FILE="${SBP_FILE}") add_executable(libsbp_cxx api.cc) target_compile_features(libsbp_cxx PRIVATE cxx_std_14) -target_link_libraries(libsbp_cxx PRIVATE ${SBP_LIBRARY}) -target_include_directories(libsbp_cxx PRIVATE ${SBP_INCLUDE_DIRS}) +target_link_libraries(libsbp_cxx PRIVATE swiftnav::sbp) target_compile_definitions(libsbp_cxx PRIVATE SBP_FILE="${SBP_FILE}")