Skip to content

Commit ebafd68

Browse files
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.
1 parent 60bf936 commit ebafd68

2 files changed

Lines changed: 33 additions & 26 deletions

File tree

CMakeLists.txt

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ option(BUILD_TESTS "Build tests" ${LIZARDBYTE_COMMON_IS_TOP_LEVEL})
3333
option(BUILD_DOCS "Build documentation" ${LIZARDBYTE_COMMON_IS_TOP_LEVEL})
3434
option(LIZARDBYTE_COMMON_BUILD_TEST_SUPPORT "Build GoogleTest support helpers"
3535
${BUILD_TESTS})
36+
option(LIZARDBYTE_COMMON_INSTALL
37+
"Install lizardbyte-common targets and package configuration"
38+
${LIZARDBYTE_COMMON_IS_TOP_LEVEL})
3639
option(LIZARDBYTE_COMMON_WARNINGS_AS_ERRORS
3740
"Treat lizardbyte-common warnings as errors"
3841
${LIZARDBYTE_COMMON_IS_TOP_LEVEL})
@@ -95,17 +98,19 @@ endif()
9598
#
9699
# Package config
97100
#
98-
configure_package_config_file(
99-
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/lizardbyte-common-config.cmake.in"
100-
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake"
101-
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
102-
103-
write_basic_package_version_file(
104-
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake"
105-
VERSION ${PROJECT_VERSION}
106-
COMPATIBILITY SameMajorVersion)
107-
108-
install(
109-
FILES "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake"
110-
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake"
111-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
101+
if(LIZARDBYTE_COMMON_INSTALL)
102+
configure_package_config_file(
103+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/lizardbyte-common-config.cmake.in"
104+
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake"
105+
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
106+
107+
write_basic_package_version_file(
108+
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake"
109+
VERSION ${PROJECT_VERSION}
110+
COMPATIBILITY SameMajorVersion)
111+
112+
install(
113+
FILES "${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config.cmake"
114+
"${CMAKE_CURRENT_BINARY_DIR}/lizardbyte-common-config-version.cmake"
115+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
116+
endif()

src/CMakeLists.txt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,19 @@ else()
2424
endif()
2525
endif()
2626

27-
install(
28-
TARGETS lizardbyte_common
29-
EXPORT lizardbyte-common-targets
30-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
31-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
32-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
27+
if(LIZARDBYTE_COMMON_INSTALL)
28+
install(
29+
TARGETS lizardbyte_common
30+
EXPORT lizardbyte-common-targets
31+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
32+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
33+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
3334

34-
install(DIRECTORY "${PROJECT_SOURCE_DIR}/src/include/"
35-
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
35+
install(DIRECTORY "${PROJECT_SOURCE_DIR}/src/include/"
36+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
3637

37-
install(
38-
EXPORT lizardbyte-common-targets
39-
NAMESPACE lizardbyte::
40-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
38+
install(
39+
EXPORT lizardbyte-common-targets
40+
NAMESPACE lizardbyte::
41+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lizardbyte-common")
42+
endif()

0 commit comments

Comments
 (0)