In diesem Leitfaden untersuchen wir Methoden zur automatischen Erkennung, ob ein Compiler darin C 11 unterstützt CMake bietet eine umfassende Analyse sowohl der neuesten als auch der vorherigen CMake-Versionen.
CMake Version 3.1.0 führte eine leistungsstarke Funktion ein: die Erkennung der von a unterstützten C-Funktionen Compiler. Dies wird durch den Befehl cmake_minimum_required erreicht:
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
Durch Angabe der minimalen CMake-Version erhalten Sie Zugriff auf die Variable CMAKE_CXX_COMPILE_FEATURES, die alle unterstützten Versionen auflistet C-Funktionen. Dadurch können Sie den C-Standard bestimmen, der in Ihrem Projekt verwendet werden soll.
Mit CMake können Sie den C-Standard für ein Ziel mithilfe der Eigenschaften CXX_STANDARD und CXX_STANDARD_REQUIRED explizit festlegen. Zum Beispiel:
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)
Dadurch wird sichergestellt, dass der Compiler mit den richtigen Flags aufgerufen wird, z. B. -std=c 11.
Alternativ können Sie die erforderlichen C-Features mit dem Befehl target_compile_features angeben. Aus dieser Liste kann CMake den entsprechenden C-Standard ableiten.
target_compile_features(foobar PRIVATE cxx_strong_enums cxx_constexpr cxx_auto_type)
Rufen Sie die Liste der unterstützten C-Funktionen mit CMAKE_CXX_KNOWN_FEATURES ab.
CMake bietet mehrere Möglichkeiten, die C 11-Compiler-Unterstützung zu erkennen und den C-Standard anzugeben. Diese Flexibilität ermöglicht maßgeschneiderte C-Projektkonfigurationen und gewährleistet so Kompatibilität und nahtlose Kompilierung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3