CMake Generator Ausdruck, differenzieren C / C ++ Code

8

Ich möchte -std=c++11 zu meinem

hinzufügen %Vor%

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?

    
Jan Rüegg 27.08.2014, 10:41
quelle

3 Antworten

2

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

%Vor%     
user2288008 30.08.2014, 08:32
quelle
13

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:

%Vor%

Wenn Sie eine Reihe von Kompilierungsoptionen haben (z. B. zur Verwendung mit der COMPILE_FLAGS target -Eigenschaft), müssen Sie die Flags aufteilen

%Vor%

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.

    
Lekensteyn 12.02.2016 11:09
quelle
3

Ich würde es lieber so machen:

%Vor%

wo die Dokumentation für set_source_files_properties ist Ссылка

    
fritzone 27.08.2014 10:44
quelle

Tags und Links