Ich möchte -std=c++11
zu meinem
Dies fügt sie jedoch auch zur Kompilierung von C Dateien hinzu, nicht nur C ++ . Ich weiß, dass ich abhängig von der verwendeten Konfiguration bedingte Kompilierflags hinzufügen kann:
%Vor%Wie kann ich mein Flag nur zu C ++ Dateien hinzufügen? Ich suche nach etwas wie:
%Vor%Aber was muss ich mit den Fragezeichen ausfüllen?
Sie können die Zieleigenschaft LINKER_LANGUAGE verwenden, um nur C ++ - Zielen ein Flag hinzuzufügen *:
%Vor%* Beachten Sie, dass dies nicht für Ziele mit gemischten C / C ++ - Quellen funktioniert
CMAKE_CXX_FLAGS sollte auch funktionieren:
%Vor% Wahrscheinlich müssen Sie sie zum Cache hinzufügen, wenn sie vor project
command gesetzt wurde (z. B. in der Toolchain):
Wenn Sie C- und C ++ - Quellen gemischt haben, wendet die LINKER_LANGUAGE
-Eigenschaft möglicherweise die falschen Flags für die Kompilierung einzelner Quellen an. Die Lösung besteht darin, den COMPILE_LANGUAGE
-Generatorausdruck zu verwenden (eingeführt mit CMake 3.3). Das einfachste Beispiel für Ihre ursprüngliche C ++ 1x-Flag ist:
Wenn Sie eine Reihe von Kompilierungsoptionen haben (z. B. zur Verwendung mit der COMPILE_FLAGS
target -Eigenschaft), müssen Sie die Flags aufteilen
Die Verwendung von Strings ist jedoch zugunsten von Listen veraltet. Wenn Listen verwendet werden, können Sie Folgendes verwenden:
%Vor%Achten Sie auf das Zitat. Wenn eine Liste keine Anführungszeichen enthält, wird sie auf ihre Elemente erweitert (und ist keine Liste mehr). Um eine Liste zwischen Befehlen zu übergeben, zitieren Sie sie.