Eine der Frustrationen bei der Softwareentwicklung ist der Versuch, Code zu kompilieren, der eine Funktion erfordert, die vom installierten Compiler nicht unterstützt wird. Beispielsweise könnte eine Softwareanwendung, die C 11 erfordert, möglicherweise nicht korrekt kompiliert werden, wenn der Benutzer einen älteren Compiler hat, der nur C 98 unterstützt. In einer solchen Situation wäre es hilfreich, wenn die Kompilierung während der CMake-Ausführung und nicht zur Kompilierungszeit fehlschlagen könnte.
Mit CMake Version 3.1.0 und höher können Sie erkennen, welche C-Funktionen ein C-Compiler unterstützt.
<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>
In den meisten Fällen müssen Sie keine Angaben machen die C-Funktionen direkt, sondern geben Sie stattdessen die erforderlichen C-Funktionen an und lassen Sie CMake den C-Standard ableiten. CMake stellt dann sicher, dass der Compiler mit den richtigen Flags aufgerufen wird (z. B. -std=c 11).
<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>
Das obige ist der detaillierte Inhalt vonWie erkennt man mit CMake die C 11-Unterstützung in Ihrem Compiler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!