Heim > Backend-Entwicklung > C++ > Wie erkennt man mit CMake die C 11-Unterstützung in Ihrem Compiler?

Wie erkennt man mit CMake die C 11-Unterstützung in Ihrem Compiler?

Mary-Kate Olsen
Freigeben: 2024-11-02 18:26:31
Original
240 Leute haben es durchsucht

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

Erkennen der C 11-Unterstützung eines Compilers mit CMake

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.

Lösung

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>
Nach dem Login kopieren

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).

Explizite Deklaration Ihres C-Standards

<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>
Nach dem Login kopieren

Verwendung von Zielkompilierungsfunktionen

<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage