CMAKE: Erstellen und Erstellen einer Liste innerhalb einer Funktion - mit Verzeichnis oder globalem Bereich

8

Ich kenne die Scoping-Regeln von cmake nicht ganz. Ich muss eine Liste verschiedener Dateien aufbauen, während ich RPC Code-Generierung für eine IDL mache.

%Vor%

Die Liste ist jedes Mal leer. Ich brauche anhängbare Liste, die innerhalb einer Funktion erstellt werden kann.

    
Hassan Syed 13.07.2011, 12:28
quelle

2 Antworten

8

Das Verwenden eines Makros anstelle einer Funktion scheint es zu tun:

%Vor%

BEARBEITEN: Laut Ссылка (sollte in der man-Seite sein, IMO):

CMake-Funktionen erstellen einen lokalen Bereich für Variablen und Makros verwenden den globalen Bereich.

    
tibur 13.07.2011, 12:34
quelle
11

Obwohl Makros genau wie Funktionen definiert und aufgerufen werden, gibt es einige Unterschiede zwischen ihnen, z. B. in SCOPE und bei der Ausführung.

SCOPE:

  • Makro: hat einen globalen Gültigkeitsbereich.
  • Funktion: Hat einen lokalen Bereich, den Sie nicht angeben.

AUSFÜHRUNG: funktioniert wie C ++ oder C

  • Makro: Die Variablennamen werden vor der Konfiguration in Strings ersetzt.

  • Funktion: Die Variablennamen werden während der Ausführung ersetzt.

Fügen Sie abschließend das PARENT_SCOPE-Flag im set-Befehl

hinzu

set (PROTO_FILES $ {PROTO_FILES} $ {file_name} PARENT_SCOPE)

    
uelordi 15.11.2013 11:10
quelle