diff --git a/CHANGELOG.md b/CHANGELOG.md index 11f2128ebec3e1ed4b2f4ff9c97598439efb8b3e..0452d4b6ee2cab3de420bce2f144b408465f0fa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ current (development) - Feature: `input` is now supporting multiple lines. - Feature: `input` style is now customizeable. +### Build +- Check version compatibility when using cmake find_package() + 4.1.0 ----- diff --git a/ftxui-config.cmake.in b/cmake/ftxui-config.cmake.in similarity index 56% rename from ftxui-config.cmake.in rename to cmake/ftxui-config.cmake.in index 5045a69c1991ad04c5ecb417309342c62b32d3c8..b04ba33eca5b7df4537779f87f8b8733cb179bdc 100644 --- a/ftxui-config.cmake.in +++ b/cmake/ftxui-config.cmake.in @@ -2,3 +2,5 @@ include(CMakeFindDependencyMacro) find_dependency(Threads) + +include("${CMAKE_CURRENT_LIST_DIR}/ftxui-targets.cmake") diff --git a/cmake/ftxui_install.cmake b/cmake/ftxui_install.cmake index 605841d6b66bde10026d2b5d0d72d938d4d50501..d6de49147ed6611e7644914a0adabe7eb2653bbf 100644 --- a/cmake/ftxui_install.cmake +++ b/cmake/ftxui_install.cmake @@ -3,41 +3,60 @@ if(NOT FTXUI_ENABLE_INSTALL) endif() include(GNUInstallDirs) -install(TARGETS screen dom component - EXPORT ftxui-export - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) +include(CMakePackageConfigHelpers) -install(DIRECTORY include/ftxui DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +# ------------------------------------------------------------------------------ +# Install the library and its public headers into the standard subdirectories +# ------------------------------------------------------------------------------ +install( + TARGETS screen dom component + EXPORT ftxui-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) -# CMake package configuration for easy use of library in CMake -include(CMakePackageConfigHelpers) -configure_package_config_file(ftxui-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/ftxui-config.cmake +install( + DIRECTORY include/ftxui + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + +# ------------------------------------------------------------------------------ +# Install the exported cmake targets for use in other CMake projects. +# ------------------------------------------------------------------------------ +install( + EXPORT ftxui-targets + NAMESPACE ftxui:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui + ) + +# ------------------------------------------------------------------------------ +# Create and install the ftuxi-config.cmake and ftuxi-config-version.cmake files +# needed to support users of find_package() +# ------------------------------------------------------------------------------ +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ftxui-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/ftxui/cmake PATH_VARS CMAKE_INSTALL_INCLUDEDIR -) + ) write_basic_package_version_file( - ftxui-config-version.cmake + ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake VERSION ${PACKAGE_VERSION} - COMPATIBILITY AnyNewerVersion -) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui-config.cmake + COMPATIBILITY SameMajorVersion + ) +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui -) -install(EXPORT ftxui-export - FILE ftxui-config-version.cmake - NAMESPACE ftxui:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui -) - -# pkg-config file for easy use of library in build systems other than CMake -configure_file(ftxui.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc - @ONLY) + ) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc - DESTINATION lib/pkgconfig -) +# ------------------------------------------------------------------------------ +# Create and install pkg-config file for easy use of library in build systems +# other than CMake: +# ------------------------------------------------------------------------------ +configure_file(ftxui.pc.in ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR} + )