Automatisierung der C 11-Kompatibilitätserkennung in CMake
Problem:
Wie kann CMake genutzt werden? C 11-Kompatibilität in einem Projekt automatisch erkennen und konfigurieren?
Lösung:
CMake Version 3.1.0 und höher:
Mit CMake Version 3.1.0 oder höher ermöglicht das folgende Code-Snippet die Erkennung von C-Funktionen, die vom Compiler unterstützt werden:
<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>
Konfigurieren von C-Standards:
Anstelle der manuellen Erkennung bietet CMake zwei Methoden zum Deklarieren des C-Standards für die Kompilierung:
Explizite Standardspezifikation:
Legen Sie die Zieleigenschaften fest CXX_STANDARD und CXX_STANDARD_REQUIRED, um den C-Standard explizit anzugeben:
<code class="cmake">set_property(TARGET prog PROPERTY CXX_STANDARD 11) set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
Funktionsabhängige Standarderkennung:
Verwendung von target_compile_features die für das Projekt erforderlichen C-Funktionen an. CMake leitet den entsprechenden C-Standard aus diesen Funktionen ab:
<code class="cmake">target_compile_features(foobar PRIVATE cxx_strong_enums cxx_constexpr cxx_auto_type)</code>
Zusätzliche Funktionalität:
Die globale CMake-EigenschaftCMAKE_CXX_KNOWN_FEATURES stellt eine Liste von bereit bekannte C-Funktionen. Dies ermöglicht die Erkennung der spezifischen Funktionen, die vom Compiler unterstützt werden.
Das obige ist der detaillierte Inhalt vonWie kann CMake zur automatischen Erkennung und Konfiguration der C 11-Kompatibilität verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!