cmake_minimum_required(VERSION 3.14) # set(CMAKE_BUILD_TYPE Release) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") # ******* SPDLOG LIBRARY ******* include(FetchContent) include(ExternalProject) set(SPDLOG_USE_STD_FORMAT ON CACHE INTERNAL "Use of C++20 std::format") set(SPDLOG_FMT_EXTERNAL OFF CACHE INTERNAL "Turn off external fmt library") find_package(spdlog CONFIG) if (NOT ${spdlog_FOUND}) FetchContent_Declare(spdlog # ExternalProject_Add(spdlog # SOURCE_DIR ${CMAKE_BINARY_DIR}/spdlog_lib # BINARY_DIR ${CMAKE_BINARY_DIR}/spdlog_lib/build GIT_REPOSITORY "https://github.com/gabime/spdlog.git" GIT_TAG "v1.15.1" GIT_SHALLOW TRUE GIT_SUBMODULES "" GIT_PROGRESS TRUE CMAKE_ARGS "-DSPDLOG_USE_STD_FORMAT=ON -DSPDLOG_FMT_EXTERNAL=OFF" # CONFIGURE_COMMAND "" # BUILD_COMMAND "" # INSTALL_COMMAND "" # UPDATE_COMMAND "" # SOURCE_SUBDIR cmake # turn off building OVERRIDE_FIND_PACKAGE ) find_package(spdlog CONFIG) endif() message(STATUS "-----: " ${spdlog_FOUND}) # ******* ERFA LIBRARY ******* ExternalProject_Add(erfalib PREFIX ${CMAKE_BINARY_DIR}/erfa_lib GIT_REPOSITORY "https://github.com/liberfa/erfa.git" GIT_TAG "v2.0.1" UPDATE_COMMAND "" PATCH_COMMAND "" # BINARY_DIR erfa_build # SOURCE_DIR erfa # INSTALL_DIR LOG_CONFIGURE 1 CONFIGURE_COMMAND meson setup --reconfigure -Ddefault_library=static -Dbuildtype=release -Dprefix=${CMAKE_BINARY_DIR}/erfa_lib -Dlibdir= -Dincludedir= -Ddatadir= BUILD_COMMAND ninja -C INSTALL_COMMAND meson install -C BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/erfa_lib/liberfa.a ) add_library(ERFA_LIB STATIC IMPORTED) set_target_properties(ERFA_LIB PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/erfa_lib/liberfa.a) add_dependencies(ERFA_LIB erfalib) set(ERFA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/erfa_lib) # include_directories(${ERFA_INCLUDE_DIR}) message(STATUS ${ERFA_INCLUDE_DIR}) add_subdirectory(bsplines) message(STATUS "BSPLINES_INCLUDE_DIR: " ${BSPLINES_INCLUDE_DIR}) include_directories(${BSPLINES_INCLUDE_DIR}) set(MCC_LIBRARY_SRC mcc_generics.h mcc_defaults.h mcc_traits.h mcc_utils.h mcc_ccte_iers.h mcc_ccte_iers_default.h mcc_ccte_erfa.h mcc_pcm.h mcc_telemetry.h mcc_angle.h mcc_pzone.h mcc_pzone_container.h mcc_finite_state_machine.h mcc_generic_mount.h mcc_tracking_model.h mcc_slewing_model.h mcc_moving_model_common.h) list(APPEND MCC_LIBRARY_SRC mcc_spdlog.h) set(MCC_LIBRARY mcc) add_library(${MCC_LIBRARY} INTERFACE ${MCC_LIBRARY_SRC}) target_compile_features(${MCC_LIBRARY} INTERFACE cxx_std_23) target_compile_definitions(${MCC_LIBRARY} INTERFACE SPDLOG_USE_STD_FORMAT=1 SPDLOG_FMT_EXTERNAL=0) target_link_libraries(${MCC_LIBRARY} INTERFACE spdlog) target_include_directories(${MCC_LIBRARY} INTERFACE ${ERFA_INCLUDE_DIR} ${BSPLINES_INCLUDE_DIR}) target_include_directories(${MCC_LIBRARY} INTERFACE $ $ ) option(WITH_TESTS "Build tests" ON) if (WITH_TESTS) set(CTTE_TEST_APP ccte_test) add_executable(${CTTE_TEST_APP} tests/ccte_test.cpp) target_include_directories(${CTTE_TEST_APP} PRIVATE ${ERFA_INCLUDE_DIR}) target_link_libraries(${CTTE_TEST_APP} ERFA_LIB bsplines) set(NETMSG_TESTS_APP netmsg_test) add_executable(${NETMSG_TESTS_APP} tests/netmsg_test.cpp) target_link_libraries(${NETMSG_TESTS_APP} mcc) enable_testing() endif()