From 4c4bdf048ce2c84bbc769b1d46de9d893b1e2cb0 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 29 Jun 2026 11:47:38 -0400 Subject: [PATCH] fix: Guard install rules behind option Add LIZARDBYTE_COMMON_INSTALL option (defaults to top-level only) to gate all install() calls and package config generation, preventing install rule conflicts when consumed as a subdirectory. --- CMakeLists.txt | 33 +++++++++++++++++++-------------- src/CMakeLists.txt | 26 ++++++++++++++------------ 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb621a3..8384b87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,9 @@ option(BUILD_TESTS "Build tests" ${LIZARDBYTE_COMMON_IS_TOP_LEVEL}) option(BUILD_DOCS "Build documentation" ${LIZARDBYTE_COMMON_IS_TOP_LEVEL}) option(LIZARDBYTE_COMMON_BUILD_TEST_SUPPORT "Build GoogleTest support helpers" ${BUILD_TESTS}) +option(LIZARDBYTE_COMMON_INSTALL + "Install lizardbyte-common targets and package configuration" + OFF) option(LIZARDBYTE_COMMON_WARNINGS_AS_ERRORS "Treat lizardbyte-common warnings as errors" ${LIZARDBYTE_COMMON_IS_TOP_LEVEL}) @@ -95,17 +98,19 @@ endif() # # Package config # -configure_package_config_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/lizardbyte-common-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") - -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake" - VERSION ${PROJECT_VERSION} - COMPATIBILITY SameMajorVersion) - -install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") +if(LIZARDBYTE_COMMON_INSTALL) + configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/lizardbyte-common-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") + + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + + install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72ef932..7176829 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -24,17 +24,19 @@ else() endif() endif() -install( - TARGETS lizardbyte_common - EXPORT lizardbyte-common-targets - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") +if(LIZARDBYTE_COMMON_INSTALL) + install( + TARGETS lizardbyte_common + EXPORT lizardbyte-common-targets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") -install(DIRECTORY "${PROJECT_SOURCE_DIR}/src/include/" - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + install(DIRECTORY "${PROJECT_SOURCE_DIR}/src/include/" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") -install( - EXPORT lizardbyte-common-targets - NAMESPACE lizardbyte:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") + install( + EXPORT lizardbyte-common-targets + NAMESPACE lizardbyte:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common") +endif()