C_STANDARD

版本 3.1 新增。

此屬性指定建置此目標時所請求的 C 標準功能。

此屬性指定建置此目標時所請求的 C 標準功能。 對於某些編譯器,這會導致在編譯行中加入旗標,例如 -std=gnu11。 對於不了解 C 標準層級的編譯器 (例如 VS 16.7 之前的 Microsoft Visual C++),此屬性沒有作用。

支援的值為

90

C89/C90

99

C99

11

C11

17

版本 3.21 新增。

C17

23

版本 3.21 新增。

C23

如果請求的值未導致為使用的編譯器加入編譯旗標,則會改為加入先前的標準旗標。 這表示使用

set_property(TARGET tgt PROPERTY C_STANDARD 11)

對於不支援 -std=gnu11 或同等旗標的編譯器,不會導致錯誤或警告,而是會加入 -std=gnu99-std=gnu90 旗標 (如果支援)。 此「衰退」行為可以使用 C_STANDARD_REQUIRED 目標屬性來控制。 此外,C_EXTENSIONS 目標屬性可用於控制是否在每個目標的基礎上啟用編譯器特定的擴充功能。

請參閱 cmake-compile-features(7) 手冊,以取得關於編譯功能和支援的編譯器清單的資訊。

如果目標在建立時已設定,則此屬性會由 CMAKE_C_STANDARD 變數的值初始化。