2016-01-13 78 views
1

我想根据我在cmake中的当前生成配置设置一些特定的编译标志。我认为生成器表达式可以让我做到这一点,但他们似乎没有像我预期的那样工作。使用生成器表达式来设置生成类型特定标志

我正在使用以下命令将编译选项设置为我的主目标。这两个表达式似乎总是评估为真,因为无论CMAKE_BUILD_TYPE设置为什么--debug和-Oh都传递给编译器。

target_compile_options(${PROJECT_NAME} 
    PUBLIC 
    ${COMMON_COMPILER_FLAGS} 
    $<$<CONFIG:Debug>:--debug> 
    $<$<CONFIG:Release>:-Oh> 
    ) 

我在Windows上使用cmake 3.4.1,我正在与IAR工具链交叉编译。更具体地说,我从Cygwin的bash shell执行cmake,但它仍然是Windows可执行文件。我正在使用Unix Makefile生成器。

+0

适用于Linux下的makefile生成器(CMake 4.1)。你使用什么目标(操作系统,生成器)? – Tsyvarev

回答

1

看起来第二面旗子是从某个地方拾起来的,恰好在正确的位置下令给我上面的印象。

我可以更新一个解释,当我确定它,但生成器表达式似乎一直工作。我插入了一些键盘粉碎,这显然只有一个通过命令行。

编辑: 不需要的优化标志来自target_compile_options调用在一些耦合到我的主要目标的库上。我有范围选项设置为PUBLIC,这意味着选项填充INTERFACE_COMPILE_OPTIONS。我将范围更改为PRIVATE,并删除了不需要的标志。

+0

感谢您跟进您的解决方案 – apmccartney