Conditional exclusion of installed file in CMake

390 Views Asked by At

I need to exclude a file when installing directory in CMake if the condition is met. So I need something like this:

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

But unfortunately it doesn't work

1

There are 1 best solutions below

1
Alex Reinking On BEST ANSWER

Generator expressions are not available in install() rules. But since yours doesn't actually depend on any generator-time information, anyway, you can use CMake's argument expansion to accomplish this.

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}
)