target_compile_options

為目標添加編譯選項。

target_compile_options(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

將選項添加到 COMPILE_OPTIONSINTERFACE_COMPILE_OPTIONS 目標屬性。 這些選項在編譯給定的 <target> 時使用,該目標必須已通過諸如 add_executable()add_library() 等命令創建,並且不得為 ALIAS 目標

注意

這些選項在連結目標時不使用。 有關此用途,請參閱 target_link_options() 命令。

參數

如果指定了 BEFORE,則內容將被前置到屬性,而不是附加到屬性。 請參閱影響在某些情況下是否會忽略 BEFORE 的政策 CMP0101

需要 INTERFACEPUBLICPRIVATE 關鍵字來指定以下參數的範圍PRIVATEPUBLIC 項目將填充 <target>COMPILE_OPTIONS 屬性。PUBLICINTERFACE 項目將填充 <target>INTERFACE_COMPILE_OPTIONS 屬性。 以下參數指定編譯選項。 對同一個 <target> 的重複調用會按照調用順序附加項目。

版本 3.11 新增: 允許在 IMPORTED 目標 上設定 INTERFACE 項目。

target_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

參見