有条件地排除 CMake 中已安装的文件
Conditional exclusion of installed file in CMake
如果满足条件,我需要在CMake中安装目录时排除一个文件。所以我需要这样的东西:
install(
DIRECTORY include
COMPONENT dev
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PATTERN $<$<NOT:$<STREQUAL:${MY_VAR},SOME_VALUE>>:my_header.h> EXCLUDE
)
但不幸的是它不起作用
生成器表达式在 install()
规则中不可用。但是由于您的实际上并不依赖于任何生成器时间信息,无论如何,您可以使用 CMake 的参数扩展来完成此操作。
if (MY_VAR STREQUAL "SOME_VALUE")
set(exclusion_patterns "")
else ()
set(exclusion_patterns PATTERN my_header.h EXCLUDE)
endif ()
install(
DIRECTORY include
COMPONENT dev
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
${exclusion_patterns}
)
如果满足条件,我需要在CMake中安装目录时排除一个文件。所以我需要这样的东西:
install(
DIRECTORY include
COMPONENT dev
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PATTERN $<$<NOT:$<STREQUAL:${MY_VAR},SOME_VALUE>>:my_header.h> EXCLUDE
)
但不幸的是它不起作用
生成器表达式在 install()
规则中不可用。但是由于您的实际上并不依赖于任何生成器时间信息,无论如何,您可以使用 CMake 的参数扩展来完成此操作。
if (MY_VAR STREQUAL "SOME_VALUE")
set(exclusion_patterns "")
else ()
set(exclusion_patterns PATTERN my_header.h EXCLUDE)
endif ()
install(
DIRECTORY include
COMPONENT dev
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
${exclusion_patterns}
)