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