我正在使用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>}
...
)
答案 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}
...
)