Ich schreibe eine CMakeLists.txt, um Dateien zu generieren und die generierten Dateien zu kompilieren. Ich erstelle eine Funktion, um einige Dateipfadzeichenfolgen zu einer globalen Listenvariablen hinzuzufügen.
Meine CMakeLists.txt:
%Vor%Die cmake Ausgabe:
%Vor%Jemand schlug vor, Makro statt Funktion zu verwenden, aber ich brauche lokale Variable, daher muss ich die Funktion anstelle von Makro verwenden.
Wie kann ich die globale Variable source_list in der Funktion test () richtig setzen? Kann es nicht einfach und normal machen?
PARENT_SCOPE ist nur für Eltern, es wird nicht funktionieren, wenn Sie andere Nicht-Eltern-Skript haben, die es auch sehen möchten.
Sie benötigen einen Cache für die wahre "global-like" Variable. In deinem Fall benutze:
%Vor%Ein anderer Ansatz besteht darin, globale Eigenschaften zu verwenden. Sobald Sie es eingestellt haben:
%Vor%Sie können es von überall lesen:
%Vor% Ich habe in Beispielen die verschiedenen Namen für die Eigenschaft ( source_list_property
) und für die Variable ( source_list
) verwendet. Vielleicht ist es besser, den gleichen Namen zu verwenden. Aber Punkt ist die Verwendung einer Eigenschaft als globale Variablen und nicht über die Benennung.
Solche globalen Eigenschaften befinden sich nicht im Cache.
Tags und Links cmake