diff --git a/CMakeLists.txt b/CMakeLists.txt index b145b4f..00aebe6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.1) -project(modbuspp) +project(modbuspp VERSION 0.3.1) set(CMAKE_CXX_STANDARD 11) @@ -10,19 +10,45 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror") endif() # BUILD INTERFACE LIB -install(FILES - "modbus.h" - DESTINATION - include/modbuspp +add_library(modbuspp_lib INTERFACE) +target_include_directories(modbuspp_lib INTERFACE + $ + $ + ) + +include(CMakePackageConfigHelpers) +install(TARGETS modbuspp_lib + EXPORT modbusppTargets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin + PUBLIC_HEADER DESTINATION include ) + +write_basic_package_version_file("modbusppConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/modbusppConfig.cmake.in" + "${PROJECT_BINARY_DIR}/modbusppConfig.cmake" + INSTALL_DESTINATION lib/cmake/modbuspp ) +install(EXPORT modbusppTargets DESTINATION lib/cmake/modbuspp) +install(FILES "${PROJECT_BINARY_DIR}/modbusppConfigVersion.cmake" + "${PROJECT_BINARY_DIR}/modbusppConfig.cmake" + DESTINATION lib/cmake/modbuspp) +install(FILES ${PROJECT_SOURCE_DIR}/modbus.h DESTINATION include) + # BUILD EXAMPLE -set(EXAMPLE_FILES example/example.cpp) -add_executable(modbuspp_example ${EXAMPLE_FILES}) -target_compile_definitions(modbuspp_example -PUBLIC - ENABLE_MODBUSPP_LOGGING -) -target_include_directories(modbuspp_example -PUBLIC - . -) +IF(BUILD_EXAMPLE) + set(EXAMPLE_FILES example/example.cpp) + add_executable(modbuspp_example ${EXAMPLE_FILES}) + target_compile_definitions(modbuspp_example + PUBLIC + ENABLE_MODBUSPP_LOGGING + ) + target_include_directories(modbuspp_example + PUBLIC + . + ) +ENDIF() diff --git a/README.md b/README.md index 2e5b1d8..7954bfd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MODBUS++ [(MODBSPP)](https://github.com/fanzhe98/modbuspp.git) v0.3 +# MODBUS++ [(MODBSPP)](https://github.com/fanzhe98/modbuspp.git) v0.3.1 [![CMake](https://github.com/fanzhe98/modbuspp/actions/workflows/cmake.yml/badge.svg)](https://github.com/fanzhe98/modbuspp/actions/workflows/cmake.yml) # 0 Info, Updates and Discalimer ## 0.0 Info diff --git a/cmake/modbusppConfig.cmake.in b/cmake/modbusppConfig.cmake.in new file mode 100644 index 0000000..fe31873 --- /dev/null +++ b/cmake/modbusppConfig.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/modbusppTargets.cmake") +check_required_components("@PROJECT_NAME@") \ No newline at end of file