diff --git a/.gitignore b/.gitignore index cdc525d..2bb351c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ cmake-build* vcpkg/ .vscode CMakeUserPresets.json -*.kdev4 \ No newline at end of file +*.kdev4 +install/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dffb56..7eb36aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,23 @@ add_library(modbus src/error.cpp) target_link_libraries(modbus PUBLIC asio) -target_include_directories(modbus PUBLIC $) +target_include_directories(modbus PUBLIC + $ + $ +) + +include(GNUInstallDirs) + +install(TARGETS modbus + EXPORT modbusTargets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} +) +install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/ DESTINATION include) + if (BUILD_EXAMPLES) add_subdirectory(examples) @@ -56,3 +72,39 @@ add_custom_target( --dry-run ${ALL_SOURCE_FILES} ) + + + +# Let's go ahead and install everything properly +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +set(modbus_PACKAGE_NAME modbus) +set(modbus_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/${modbus_PACKAGE_NAME}) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${modbus_PACKAGE_NAME}ConfigVersion.cmake" + VERSION ${CMAKE_PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +configure_package_config_file( + "${CMAKE_CURRENT_LIST_DIR}/${modbus_PACKAGE_NAME}Config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${modbus_PACKAGE_NAME}Config.cmake" + INSTALL_DESTINATION ${modbus_INSTALL_CMAKEDIR} +) + +install(EXPORT ${modbus_PACKAGE_NAME}Targets DESTINATION ${modbus_INSTALL_CMAKEDIR}) +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/${modbus_PACKAGE_NAME}ConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${modbus_PACKAGE_NAME}Config.cmake" + DESTINATION ${modbus_INSTALL_CMAKEDIR} +) + +install( + EXPORT ${modbus_PACKAGE_NAME}Targets + NAMESPACE modbus:: + DESTINATION ${modbus_INSTALL_CMAKEDIR} +) + diff --git a/CMakePresets.json b/CMakePresets.json index 2e1ddd9..029c8cd 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -14,7 +14,8 @@ { "name": "conf-gcc", "cacheVariables": { - "VCPKG_TARGET_TRIPLET": "x64-linux-gcc" + "VCPKG_TARGET_TRIPLET": "x64-linux-gcc", + "CMAKE_INSTALL_PREFIX": "${fileDir}/install/${presetName}" }, "inherits": [ "conf-base" diff --git a/modbusConfig.cmake.in b/modbusConfig.cmake.in new file mode 100644 index 0000000..e69de29