【问题标题】:Conditional exclusion of installed file in CMakeCMake中已安装文件的条件排除
【发布时间】:2022-01-08 17:28:35
【问题描述】:

如果满足条件,我需要在 CMake 中安装目录时排除文件。所以我需要这样的东西:

install(
    DIRECTORY include
    COMPONENT dev
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
    PATTERN $<$<NOT:$<STREQUAL:${MY_VAR},SOME_VALUE>>:my_header.h> EXCLUDE
)

但不幸的是它不起作用

【问题讨论】:

    标签: installation cmake generator-expression


    【解决方案1】:

    生成器表达式在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}
    )
    

    【讨论】:

    • 非常感谢您的回答。我也考虑过if...else 语句,但希望使生成器表达式工作,因为它们更紧凑一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2013-11-24
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多