simplesync/CMakeLists.txt
2024-01-12 09:48:49 +01:00

91 lines
3.0 KiB
CMake
Executable File

cmake_minimum_required (VERSION 3.15)
project (simplesync)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic")
set(CMAKE_CXX_STANDARD 20)
option(BUILD_TESTS "Build all tests." OFF)
option(BUILD_PYLIB "Build python lib." OFF)
add_definitions(-D__LINUX_BUILD)
include_directories(include)
set(SRCS )#src/simplesync.hpp)
# Build the static library
add_library(simplesync INTERFACE ${SRCS})
set_target_properties(simplesync PROPERTIES OUTPUT_NAME "simplesync")
target_include_directories(simplesync
INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
install(TARGETS simplesync
EXPORT simplesyncTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
add_library(simplesync::simplesync ALIAS simplesync)
include(GNUInstallDirs)
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/simplesync
CACHE PATH "Location of header files" )
set(SYSCONFIG_INSTALL_DIR ${CMAKE_INSTALL_SYSCONFDIR}/simplesync
CACHE PATH "Location of configuration files" )
#...
include(CMakePackageConfigHelpers)
configure_package_config_file(cmake/simplesync-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/simplesync-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simplesync
PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/simplesync-config-version.cmake
VERSION 1.0.1
COMPATIBILITY SameMajorVersion )
install(EXPORT simplesyncTargets
FILE simplesync-targets.cmake
NAMESPACE simplesync::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simplesync )
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/simplesync-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/simplesync-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simplesync )
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/simplesync.hpp
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/simplesync)
export( EXPORT simplesyncTargets
FILE ${CMAKE_CURRENT_BINARY_DIR}/simplesync-targets.cmake)
if (BUILD_PYLIB)
include(FetchContent)
FetchContent_Declare(
pybind11
GIT_REPOSITORY https://github.com/pybind/pybind11
GIT_TAG v2.11.1
)
FetchContent_MakeAvailable(pybind11)
find_package(pybind11 CONFIG)
pybind11_add_module(pysimplesync src/python_module.cpp)
endif()
if (BUILD_TESTS)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG f8d7d77
)
FetchContent_MakeAvailable(googletest)
enable_testing()
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR} .)
add_executable(${PROJECT_NAME}_test test/simplesync_test.cpp)
target_link_libraries(${PROJECT_NAME}_test gtest gtest_main simplesync)
endif()