我想通過cmake的add_compile_options
將「複合」選項傳遞給編譯器。使用cmake傳遞複合編譯器選項
也就是說,涉及兩個(或更多)標誌的選項必須以特定的順序傳遞,並且即使它們已經傳遞給編譯器,也不會忽略任何標誌。
一個例子就是所有必須通過clang傳遞給llvm的llvm選項,例如-mllvm -ABC -mllvm -XYZ -mllvm ...
。
我不想使用CMake的反模式set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mllvm -ABC")
,但使用便攜式的東西,如check_cxx_compiler_flag(flag available)
+ add_compile_option(flag)
。
但是,add_compile_options(-mllvm -XYZ -mllvm -ABC)
失敗,因爲-mllvm
選項被緩存,並且只通過一次,因此-mllvm -XYZ -ABC
傳遞導致錯誤。
此外,使用引號「」並沒有幫助,因爲引號也被傳遞(即它們沒有被剝離),這也導致錯誤。
用CMake傳遞這些選項的習慣用法是什麼?
第一次聽說附加到'CMAKE_CXX_FLAGS'的手冊是* antipattern *。如果它看起來像正確的解決方案。 – Tsyvarev
'add_compile_options(「 - mllvm -XYZ; -mllvm -ABC」)'是否正常工作? – arrowd
@arrowd沒有,因爲它不修剪引號「」,所以它增加了例如'鐺++ ....「-mllvm -XYZ; -mllvm -ABC」'這是無效的。 – gnzlbg