首頁 >後端開發 >C++ >如何使用 CMake 檢測編譯器中的 C 11 支援?

如何使用 CMake 檢測編譯器中的 C 11 支援?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 18:26:31236瀏覽

How to Detect C  11 Support in Your Compiler with CMake?

使用 CMake 偵測編譯器對 C 11 的支援

軟體開發中的挫折之一是嘗試編譯需要已安裝編譯器不支援的功能的程式碼。例如,如果使用者擁有僅支援 C 98 的較舊編譯器,則需要 C 11 的軟體應用程式可能無法正確編譯。在這種情況下,如果編譯在 CMake 運行期間而不是在編譯時失敗會很有幫助。

解決方案

CMake 3.1.0 及更高版本可偵測 C 編譯器支援哪些 C 功能。

<code class="cmake">cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(foobar CXX)
message("Your C++ compiler supports these C++ features:")
foreach(i ${CMAKE_CXX_COMPILE_FEATURES})
  message("${i}")
endforeach()</code>

在大多數情況下,您不必指定直接使用 C 功能,而是指定所需的 C 功能並讓 CMake 推導出 C 標準。然後,CMake 將確保使用正確的標誌呼叫編譯器(例如 -std=c 11)。

明確宣告您的 C 標準

<code class="cmake"># Explicitly set C++ standard and required features
add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>

使用目標編譯功能

<code class="cmake"># Specify required C++ features and let CMake deduce the C++ standard
target_compile_features(foobar PRIVATE
  cxx_strong_enums
  cxx_constexpr
  cxx_auto_type)</code>

以上是如何使用 CMake 檢測編譯器中的 C 11 支援?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn