vcpkg/ports/tinkerforge/CMakeLists.txt
Alexander Neumann 9781bea65e [tinkerforge] Fix some issues. (#8148)
* [tinkerforge] fix error with config (wrong include path) and missing dependencies.
2019-09-12 10:09:29 -07:00

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}")