add_compile_options¶
為原始碼檔案的編譯新增選項。
add_compile_options(<option> ...)
將選項新增至 COMPILE_OPTIONS
目錄屬性。這些選項會在編譯目前目錄及以下目錄的目標時使用。
注意
這些選項不會在連結時使用。請參閱 add_link_options()
命令。
引數¶
add_compile_options
的引數可以使用產生器表達式,語法為 $<...>
。請參閱 cmake-generator-expressions(7)
手冊,以了解可用的表達式。請參閱 cmake-buildsystem(7)
手冊,以了解更多關於定義建置系統屬性的資訊。
選項去重複¶
目標使用的最終選項集,是透過累積目前目標及其相依性的使用需求選項來建構的。選項集會去重複以避免重複。
在 3.12 版本中新增: 雖然對於個別選項有益,但去重複步驟可能會破壞選項群組。例如,-option A -option B
會變成 -option A B
。可以使用類似 shell 的引號搭配 SHELL:
前綴來指定選項群組。 SHELL:
前綴會被捨棄,而選項字串的其餘部分會使用 separate_arguments()
UNIX_COMMAND
模式進行剖析。例如,"SHELL:-option A" "SHELL:-option B"
會變成 -option A -option B
。
範例¶
由於不同的編譯器支援不同的選項,因此此命令的典型用法是在編譯器特定的條件子句中
if (MSVC)
# warning level 4
add_compile_options(/W4)
else()
# additional warnings
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
若要設定每個語言的選項,請使用 $<COMPILE_LANGUAGE>
或 $<COMPILE_LANGUAGE:languages>
產生器表達式。
另請參閱¶
此命令可用於新增任何選項。但是,對於新增前置處理器定義和包含目錄,建議使用更具體的命令
add_compile_definitions()
和include_directories()
。命令
target_compile_options()
會新增目標特定的選項。此命令會為所有語言新增編譯選項。使用
COMPILE_LANGUAGE
產生器表達式來指定每個語言的編譯選項。原始碼檔案屬性
COMPILE_OPTIONS
會為一個原始碼檔案新增選項。add_link_options()
會新增連結選項。CMAKE_<LANG>_FLAGS
和CMAKE_<LANG>_FLAGS_<CONFIG>
會新增語言範圍的旗標,這些旗標會傳遞給編譯器的所有調用。這包括驅動編譯和驅動連結的調用。