build: install cmake config files to enable cmake find_package (#11)

* build: install cmake config files to enable cmake find_package

* fix: destination for header files
This commit is contained in:
Carlos Gomes Martinho
2019-12-31 19:59:29 +01:00
committed by Steve Karg
parent ac491d4d39
commit 221ff7fa3e
3 changed files with 116 additions and 52 deletions
+108 -52
View File
@@ -1,14 +1,24 @@
cmake_minimum_required(VERSION 3.12 FATAL_ERROR) cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(bacnet-stack LANGUAGES C) project(bacnet-stack VERSION 0.8.6 LANGUAGES C)
option(BACNET_STACK_BUILD_APPS #
"build apps" # options
OFF) #
option(BAC_ROUTING option(
"enable bac routing" BACNET_STACK_BUILD_APPS
OFF) "build apps"
OFF)
option(
BAC_ROUTING
"enable bac routing"
OFF)
#
# sources
#
set(BACNETSTACK_SRCS set(BACNETSTACK_SRCS
${CMAKE_CURRENT_LIST_DIR}/src/bacnet/abort.c ${CMAKE_CURRENT_LIST_DIR}/src/bacnet/abort.c
@@ -349,50 +359,66 @@ set(BACNETSTACK_SRCS
${CMAKE_CURRENT_LIST_DIR}/src/bacnet/wpm.h) ${CMAKE_CURRENT_LIST_DIR}/src/bacnet/wpm.h)
if(LINUX) if(LINUX)
list(APPEND BACNETSTACK_SRCS list(
${CMAKE_CURRENT_LIST_DIR}/ports/linux/arcnet.c APPEND BACNETSTACK_SRCS
# ${CMAKE_CURRENT_LIST_DIR}/ports/linux/bip6.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/arcnet.c
# ${CMAKE_CURRENT_LIST_DIR}/ports/linux/rx_fsm.c # ${CMAKE_CURRENT_LIST_DIR}/ports/linux/bip6.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/bip-init.c # ${CMAKE_CURRENT_LIST_DIR}/ports/linux/rx_fsm.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/bip-init.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp_linux.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp_linux.h ${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp_linux.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/ethernet.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/dlmstp_linux.h
${CMAKE_CURRENT_LIST_DIR}/ports/linux/mstpsnap.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/ethernet.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/net.h ${CMAKE_CURRENT_LIST_DIR}/ports/linux/mstpsnap.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/rs485.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/net.h
${CMAKE_CURRENT_LIST_DIR}/ports/linux/rs485.h ${CMAKE_CURRENT_LIST_DIR}/ports/linux/rs485.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/timer.c ${CMAKE_CURRENT_LIST_DIR}/ports/linux/rs485.h
${CMAKE_CURRENT_LIST_DIR}/ports/linux/timer.h) ${CMAKE_CURRENT_LIST_DIR}/ports/linux/timer.c
${CMAKE_CURRENT_LIST_DIR}/ports/linux/timer.h)
elseif(WIN32) elseif(WIN32)
list(APPEND BACNETSTACK_SRCS list(
${CMAKE_CURRENT_LIST_DIR}/ports/win32/bacport.h APPEND BACNETSTACK_SRCS
${CMAKE_CURRENT_LIST_DIR}/ports/win32/bip6.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/bacport.h
${CMAKE_CURRENT_LIST_DIR}/ports/win32/bip-init.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/bip6.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/datetime-init.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/bip-init.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/datetime-init.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp.cbp ${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp-mm.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp.cbp
${CMAKE_CURRENT_LIST_DIR}/ports/win32/ethernet.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/dlmstp-mm.c
# ${CMAKE_CURRENT_LIST_DIR}/ports/win32/main.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/ethernet.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/mstimer-init.c # ${CMAKE_CURRENT_LIST_DIR}/ports/win32/main.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/rs485.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/mstimer-init.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/rs485.h ${CMAKE_CURRENT_LIST_DIR}/ports/win32/rs485.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/rx_fsm.c ${CMAKE_CURRENT_LIST_DIR}/ports/win32/rs485.h
${CMAKE_CURRENT_LIST_DIR}/ports/win32/rx_fsm.cbp ${CMAKE_CURRENT_LIST_DIR}/ports/win32/rx_fsm.c
${CMAKE_CURRENT_LIST_DIR}/ports/win32/stdbool.h ${CMAKE_CURRENT_LIST_DIR}/ports/win32/rx_fsm.cbp
${CMAKE_CURRENT_LIST_DIR}/ports/win32/stdint.h) ${CMAKE_CURRENT_LIST_DIR}/ports/win32/stdbool.h
${CMAKE_CURRENT_LIST_DIR}/ports/win32/stdint.h)
endif() endif()
#
# library
#
add_library(${PROJECT_NAME} ${BACNETSTACK_SRCS}) add_library(${PROJECT_NAME} ${BACNETSTACK_SRCS})
target_include_directories(${PROJECT_NAME} target_include_directories(
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/> ${PROJECT_NAME}
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/bacnet/> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/>
$<INSTALL_INTERFACE:include/bacnet/> $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/bacnet/>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/ports/linux/>) $<INSTALL_INTERFACE:include/bacnet/>
target_compile_definitions(${PROJECT_NAME} $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/ports/linux/>)
PUBLIC target_compile_definitions(
$<$<BOOL:${BAC_ROUTING}>:BAC_ROUTING>) ${PROJECT_NAME}
PUBLIC
$<$<BOOL:${BAC_ROUTING}>:BAC_ROUTING>)
add_library(
${PROJECT_NAME}::${PROJECT_NAME}
ALIAS
${PROJECT_NAME})
#
# examples
#
if(BACNET_STACK_BUILD_APPS) if(BACNET_STACK_BUILD_APPS)
message(STATUS "BACNET: compilinng also apps") message(STATUS "BACNET: compilinng also apps")
@@ -464,8 +490,38 @@ if(BACNET_STACK_BUILD_APPS)
target_link_libraries(writepropm PRIVATE ${PROJECT_NAME}) target_link_libraries(writepropm PRIVATE ${PROJECT_NAME})
endif() endif()
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/src/bacnet/ DESTINATION include/bacnet FILES_MATCHING PATTERN "*.h") #
# install
#
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
set(BACNET_STACK_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME} install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin EXPORT ${PROJECT_NAME}Targets
ARCHIVE DESTINATION lib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
LIBRARY DESTINATION lib PERMISSIONS WORLD_READ) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
install(EXPORT ${PROJECT_NAME}Targets
DESTINATION ${BACNET_STACK_CONFIG_INSTALL_DIR}
NAMESPACE ${PROJECT_NAME}::
COMPONENT dev)
configure_package_config_file(cmake/Config.cmake.in
${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION
${BACNET_STACK_CONFIG_INSTALL_DIR})
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake
COMPATIBILITY SameMajorVersion)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${BACNET_STACK_CONFIG_INSTALL_DIR}
COMPONENT dev)
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/src/bacnet
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT dev
FILES_MATCHING
PATTERN "*.h")
+4
View File
@@ -16,3 +16,7 @@ enable_markup: False
# If arglists are longer than this, break them always # If arglists are longer than this, break them always
max_subargs_per_line: 1 max_subargs_per_line: 1
max_pargs_hwrap: 2
max_subgroups_hwrap: 2
+4
View File
@@ -0,0 +1,4 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components("@PROJECT_NAME@")