OBJC_STANDARD¶
於版本 3.16 加入。
此目標請求建置所使用的 OBJC 標準。
此屬性指定此目標請求建置所使用的 OBJC 標準。對於某些編譯器,這會導致在編譯行中加入諸如 -std=gnu11
之類的旗標。
支援的值為
90
Objective C89/C90
99
Objective C99
11
Objective C11
17
於版本 3.21 加入。
Objective C17
23
於版本 3.21 加入。
Objective C23
如果請求的值不會導致為正在使用的編譯器加入編譯旗標,則會改為加入先前的標準旗標。這表示使用
set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
如果編譯器不支援 -std=gnu11
或等效的旗標,則不會導致錯誤或警告,而是會加入 -std=gnu99
或 -std=gnu90
旗標(如果支援)。可以使用 OBJC_STANDARD_REQUIRED
目標屬性來控制此「衰退」行為。此外,可以使用 OBJC_EXTENSIONS
目標屬性來控制是否在每個目標的基礎上啟用編譯器特定的擴充功能。
如果未設定此屬性,且專案已設定 C_STANDARD
,則會為 OBJC_STANDARD
設定 C_STANDARD
的值。
請參閱 cmake-compile-features(7)
手冊,以取得有關編譯功能和支援的編譯器清單的資訊。
如果目標建立時設定了 CMAKE_OBJC_STANDARD
變數,則此屬性會由其值初始化。