2016-01-13 77 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