CMake在外部项目中使用标志进行特定配置

时间:2017-12-15 21:23:26

标签: cmake

我正在使用ExternalProject_Add构建一个基于make的外部项目。我想根据当前的构建配置传播标志。

我基本上必须遵循以下命令:

ExternalProject_Add(
        ...
        BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS_???}
        ...
        )

我希望在Debug中构建项目时使用CMAKE_C_FLAGS_DEBUG,或者当前配置是什么。怎么办?我试过这个,但它没有解析:

ExternalProject_Add(
        ...
        BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS_$<CONFIG>}
        ...
        )

1 个答案:

答案 0 :(得分:0)

我没有找到合适的解决方案,但却是合理的妥协。因为对我们来说最重要的是在发布版本中使用正确的标志,我现在正在专门检查它,使用this rather convoluted workaround在3.8之前的生成器表达式中缺少if-then-else: / p>

set(default_flags "${CMAKE_C_FLAGS} -g -O2")
set(release_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}")
set(flags $<$<CONFIG:Release>:${release_flags}>$<$<NOT:$<CONFIG:Release>>:${default_flags}>)

ExternalProject_Add(
    ...
    BUILD_COMMAND make CFLAGS=${flags}
    ...
    )