68 lines
2.8 KiB
CMake
68 lines
2.8 KiB
CMake
|
cmake_minimum_required (VERSION 3.13 FATAL_ERROR)
|
||
|
include(GNUInstallDirs)
|
||
|
|
||
|
if(WIN32)
|
||
|
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}")
|
||
|
endif()
|
||
|
|
||
|
project(tinkerforge LANGUAGES C VERSION 2.1.25)
|
||
|
|
||
|
if(NOT CONFIG_INSTALL_DIR)
|
||
|
set(CONFIG_INSTALL_DIR "share/${PROJECT_NAME}/")
|
||
|
endif()
|
||
|
if(NOT INCLUDE_INSTALL_DIR)
|
||
|
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}")
|
||
|
endif()
|
||
|
if(NOT TARGET_INSTALL_DIR)
|
||
|
set(TARGET_INSTALL_DIR "share/${PROJECT_NAME}")
|
||
|
endif()
|
||
|
|
||
|
|
||
|
file(GLOB CPP_FILES source/*.c)
|
||
|
file(GLOB H_FILES source/*.h)
|
||
|
file(GLOB DEF_FILE source/*.def)
|
||
|
|
||
|
add_library(${PROJECT_NAME} ${CPP_FILES} ${H_FILES} ${DEF_FILE})
|
||
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/source>
|
||
|
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}>)
|
||
|
|
||
|
find_package(Threads)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads)
|
||
|
|
||
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Windows")
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Ws2_32 advapi32)
|
||
|
endif()
|
||
|
##---------------------------------------------------------------------------------------##
|
||
|
##----- Package definition.
|
||
|
##---------------------------------------------------------------------------------------##
|
||
|
include(CMakePackageConfigHelpers)
|
||
|
|
||
|
#Export as Package
|
||
|
set_target_properties (${PROJECT_NAME} PROPERTIES EXPORT_NAME ${PROJECT_NAME})
|
||
|
export(TARGETS ${PROJECT_NAME} NAMESPACE ${PROJECT_NAME}:: FILE cmake/${PROJECT_NAME}Targets.cmake)
|
||
|
export(PACKAGE ${PROJECT_NAME})
|
||
|
|
||
|
#Config files for find_package
|
||
|
configure_package_config_file(
|
||
|
${PROJECT_NAME}Config.cmake.in cmake/${PROJECT_NAME}Config.cmake
|
||
|
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}/${PROJECT_NAME}Config.cmake"
|
||
|
PATH_VARS TARGET_INSTALL_DIR INCLUDE_INSTALL_DIR
|
||
|
)
|
||
|
write_basic_package_version_file(cmake/${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMinorVersion)
|
||
|
|
||
|
#Install the target and all it build outputs.
|
||
|
install (TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
|
||
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Runtime
|
||
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Development
|
||
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT Runtime
|
||
|
PUBLIC_HEADER DESTINATION "${INCLUDE_INSTALL_DIR}" COMPONENT Development
|
||
|
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT Runtime)
|
||
|
#Install public headers
|
||
|
install(FILES ${H_FILES} DESTINATION "${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}")
|
||
|
#Install the config files for find_package
|
||
|
install(FILES "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
|
||
|
"${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
|
||
|
DESTINATION "${CONFIG_INSTALL_DIR}")
|
||
|
#install the targets file included by the config
|
||
|
install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION "${TARGET_INSTALL_DIR}")
|