RaptorEagleV/CMakeLists.txt
2024-12-27 16:04:12 +03:00

93 lines
3.1 KiB
CMake

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(RAPROT_SHARED_LIB "Create shared '${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 (RAPROT_SHARED_LIB)
add_library(${RAPTOR_EAGLEV_LIB} SHARED ${RAPTOR_EAGLEV_LIB_SRC})
else()
add_library(${RAPTOR_EAGLEV_LIB} STATIC ${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 (RAPROT_SHARED_LIB) # install shared library and server binary
install(TARGETS ${RAPTOR_EAGLEV_LIB} ${RAPTOR_EAGLEV_SERVER}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
else()
install(TARGETS ${RAPTOR_EAGLEV_SERVER}
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()