cmake_minimum_required(VERSION 3.16) project(RaptorEagleV LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") find_package(Threads REQUIRED) # find_package(spdlog REQUIRED) find_package(spdlog CONFIG) find_package(CFITSIO REQUIRED) find_package(XCLIB REQUIRED) find_package(cxxopts CONFIG) set(RAPTOR_EAGLEV_LIB raptor_eaglev) option(STATIC_LIB "Create static '${RAPTOR_EAGLEV_LIB}' library" OFF) set(RAPTOR_EAGLEV_LIB_SRC raptor_eagle_ccd.h raptor_eagle_ccd.cpp raptor_eagle_cameralink.h raptor_eagle_exception.h raptor_eagle_acqproc.cpp) if (STATIC_LIB) add_library(${RAPTOR_EAGLEV_LIB} STATIC ${RAPTOR_EAGLEV_LIB_SRC}) else() add_library(${RAPTOR_EAGLEV_LIB} SHARED ${RAPTOR_EAGLEV_LIB_SRC}) endif() # include(FetchContent) # include(ExternalProject) # FetchContent_Declare(spdlog # # SOURCE_DIR ${CMAKE_BINARY_DIR}/spdlog # # BINARY_DIR ${CMAKE_BINARY_DIR}/spdlog/build # GIT_REPOSITORY "https://github.com/gabime/spdlog.git" # GIT_TAG "v1.15.0" # GIT_SHALLOW TRUE # GIT_SUBMODULES "" # GIT_PROGRESS TRUE # ) # FetchContent_MakeAvailable(spdlog) # FetchContent_GetProperties(spdlog SOURCE_DIR spdlog_SOURCE_DIR) # set(spdlog_INCLUDE_DIR ${spdlog_SOURCE_DIR}/include) # to activate spdlog-library support in ADC-library # target_compile_definitions(${RAPTOR_EAGLEV_LIB} PRIVATE USE_ASIO_LIBRARY USE_SPDLOG_LIBRARY USE_OPENSSL_WITH_ASIO) target_compile_definitions(${RAPTOR_EAGLEV_LIB} PUBLIC USE_ASIO_LIBRARY USE_SPDLOG_LIBRARY) target_compile_definitions(${RAPTOR_EAGLEV_LIB} PUBLIC SPDLOG_USE_STD_FORMAT) # !!!!! TEMPORARY !!!!! target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC "../ADC/") target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC ${XCLIB_INCLUDE_DIR} ${CFITSIO_INCLUDE_DIR}) # target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC ${spdlog_INCLUDE_DIR}) target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC spdlog::spdlog_header_only) # target_link_libraries(${RAPTOR_EAGLEV_LIB} PUBLIC Threads::Threads spdlog::spdlog_header_only ${XCLIB_LIBRARIES} ${CFITSIO_LIBRARY}) target_link_libraries(${RAPTOR_EAGLEV_LIB} PUBLIC Threads::Threads ${XCLIB_LIBRARIES} ${CFITSIO_LIBRARY}) set(RAPTOR_EAGLEV_SERVER raptor_eaglev_server) add_executable(${RAPTOR_EAGLEV_SERVER} raptor_eaglev_server.cpp) target_link_libraries(${RAPTOR_EAGLEV_SERVER} PUBLIC ${RAPTOR_EAGLEV_LIB} cxxopts::cxxopts) include(GNUInstallDirs) if (STATIC_LIB) # install only server binary install(TARGETS ${RAPTOR_EAGLEV_SERVER} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) else() install(TARGETS ${RAPTOR_EAGLEV_LIB} ${RAPTOR_EAGLEV_SERVER} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) endif() # uninstall target if(NOT TARGET uninstall) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif()