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 變數,則此屬性會由此變數的值初始化。