CMakeLists.txt: do not fetch SPDLOG library, but check for system one

CMakeLists.txt: add uninstall target
This commit is contained in:
Timur A. Fatkhullin 2024-12-23 11:57:27 +03:00
parent f068cbb44b
commit 0ece075bb8
2 changed files with 59 additions and 26 deletions

View File

@ -9,7 +9,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
# find_package(spdlog REQUIRED) # find_package(spdlog REQUIRED)
# find_package(spdlog CONFIG) find_package(spdlog CONFIG)
find_package(CFITSIO REQUIRED) find_package(CFITSIO REQUIRED)
find_package(XCLIB REQUIRED) find_package(XCLIB REQUIRED)
@ -21,7 +21,8 @@ set(RAPTOR_EAGLEV_LIB raptor_eaglev)
option(STATIC_LIB "Create static '${RAPTOR_EAGLEV_LIB}' library" OFF) option(STATIC_LIB "Create static '${RAPTOR_EAGLEV_LIB}' library" OFF)
set(RAPTOR_EAGLEV_LIB_SRC set(RAPTOR_EAGLEV_LIB_SRC
raptor_eagle_ccd.h raptor_eagle_ccd.cpp raptor_eagle_ccd.h
raptor_eagle_ccd.cpp
raptor_eagle_cameralink.h raptor_eagle_cameralink.h
raptor_eagle_exception.h raptor_eagle_exception.h
raptor_eagle_acqproc.cpp) raptor_eagle_acqproc.cpp)
@ -32,21 +33,21 @@ else()
add_library(${RAPTOR_EAGLEV_LIB} SHARED ${RAPTOR_EAGLEV_LIB_SRC}) add_library(${RAPTOR_EAGLEV_LIB} SHARED ${RAPTOR_EAGLEV_LIB_SRC})
endif() endif()
include(FetchContent) # include(FetchContent)
include(ExternalProject) # include(ExternalProject)
FetchContent_Declare(spdlog # FetchContent_Declare(spdlog
# SOURCE_DIR ${CMAKE_BINARY_DIR}/spdlog # # SOURCE_DIR ${CMAKE_BINARY_DIR}/spdlog
# BINARY_DIR ${CMAKE_BINARY_DIR}/spdlog/build # # BINARY_DIR ${CMAKE_BINARY_DIR}/spdlog/build
GIT_REPOSITORY "https://github.com/gabime/spdlog.git" # GIT_REPOSITORY "https://github.com/gabime/spdlog.git"
GIT_TAG "v1.15.0" # GIT_TAG "v1.15.0"
GIT_SHALLOW TRUE # GIT_SHALLOW TRUE
GIT_SUBMODULES "" # GIT_SUBMODULES ""
GIT_PROGRESS TRUE # GIT_PROGRESS TRUE
) # )
FetchContent_MakeAvailable(spdlog) # FetchContent_MakeAvailable(spdlog)
FetchContent_GetProperties(spdlog SOURCE_DIR spdlog_SOURCE_DIR) # FetchContent_GetProperties(spdlog SOURCE_DIR spdlog_SOURCE_DIR)
set(spdlog_INCLUDE_DIR ${spdlog_SOURCE_DIR}/include) # set(spdlog_INCLUDE_DIR ${spdlog_SOURCE_DIR}/include)
# to activate spdlog-library support in ADC-library # to activate spdlog-library support in ADC-library
@ -57,7 +58,8 @@ target_compile_definitions(${RAPTOR_EAGLEV_LIB} PUBLIC SPDLOG_USE_STD_FORMAT)
# !!!!! TEMPORARY !!!!! # !!!!! TEMPORARY !!!!!
target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC "../ADC/") 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 ${XCLIB_INCLUDE_DIR} ${CFITSIO_INCLUDE_DIR})
target_include_directories(${RAPTOR_EAGLEV_LIB} PUBLIC ${spdlog_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 spdlog::spdlog_header_only ${XCLIB_LIBRARIES} ${CFITSIO_LIBRARY})
target_link_libraries(${RAPTOR_EAGLEV_LIB} PUBLIC Threads::Threads ${XCLIB_LIBRARIES} ${CFITSIO_LIBRARY}) target_link_libraries(${RAPTOR_EAGLEV_LIB} PUBLIC Threads::Threads ${XCLIB_LIBRARIES} ${CFITSIO_LIBRARY})
@ -67,12 +69,24 @@ add_executable(${RAPTOR_EAGLEV_SERVER} raptor_eaglev_server.cpp)
target_link_libraries(${RAPTOR_EAGLEV_SERVER} PUBLIC ${RAPTOR_EAGLEV_LIB} cxxopts::cxxopts) target_link_libraries(${RAPTOR_EAGLEV_SERVER} PUBLIC ${RAPTOR_EAGLEV_LIB} cxxopts::cxxopts)
include(GNUInstallDirs) include(GNUInstallDirs)
install(TARGETS ${RAPTOR_EAGLEV_LIB} if (STATIC_LIB) # install only server binary
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} install(TARGETS ${RAPTOR_EAGLEV_SERVER}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
) )
# install(TARGETS ${RAPTOR_EAGLEV_LIB} ${RAPTOR_EAGLEV_SERVER} else()
# LIBRARY DESTINATION "/home/obs/TMP" install(TARGETS ${RAPTOR_EAGLEV_LIB} ${RAPTOR_EAGLEV_SERVER}
# ARCHIVE DESTINATION "/home/obs/TMP" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
# RUNTIME DESTINATION "/home/obs/TMP" 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()

19
cmake_uninstall.cmake.in Normal file
View File

@ -0,0 +1,19 @@
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif(NOT "${rm_retval}" STREQUAL 0)
else()
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()