421 Stimmen

Wie kann ich C++ 11 in CMake aktivieren?

Wenn ich versuche, ein von CMake generiertes Makefile auszuführen, um mein Programm zu kompilieren, erhalte ich den Fehler, dass

Bereichsbezogene for-Schleifen werden im C++ 98-Modus nicht unterstützt.

Ich habe versucht, Folgendes hinzuzufügen add_definitions(-std=c++0x) zu meinem CMakeLists.txt aber es hat nicht geholfen.

Das habe ich auch versucht:

if(CMAKE_COMPILER_IS_GNUCXX)
    add_definitions(-std=gnu++0x)
endif()

Wenn ich das tue g++ --version erhalte ich:

g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

Ich habe auch versucht SET(CMAKE_CXX_FLAGS "-std=c++0x") was ebenfalls nicht funktioniert.

Ich verstehe nicht, wie ich die Funktionen von C++ 11 mit CMake aktivieren kann.

0voto

Amin Punkte 832

Sie können Folgendes verwenden. Dadurch wird das Merkmal automatisch an Ihre Umgebung angepasst.

target_compile_features(your_target INTERFACE cxx_std_20)

Zum Beispiel,

  • unter Gnu/Linux wird folgendes hinzugefügt -std=gnu++20
  • unter Windows mit Clang/Ninja wird daraus -std=c++20
  • unter Windows mit MSVC wird daraus /std=c++20

So unterstützen Sie so viele Umgebungen wie möglich.

-6voto

senz Punkte 1720

OS X und Homebrew LLVM bezogen:

Vergessen Sie nicht, cmake_minimum_required(VERSION 3.3) und project() danach aufzurufen!

Oder CMake fügt project() implizit vor Zeile 1, was zu Problemen mit der Clang-Versionserkennung und möglicherweise zu anderen Problemen führt. Hier ist ein verwandtes Thema .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X