78 lines
2.7 KiB
CMake
Executable File
78 lines
2.7 KiB
CMake
Executable File
cmake_minimum_required (VERSION 3.15)
|
|
project (simplesync)
|
|
|
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic")
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
option(BUILD_TESTS "Build all tests." OFF)
|
|
|
|
add_definitions(-D__LINUX_BUILD)
|
|
|
|
include_directories(src)
|
|
|
|
set(SRCS src/simplesync.hpp)
|
|
|
|
# Build the shared library
|
|
|
|
# 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_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()
|