CMake - Erzwinge find_package, um Cache-Variablen zu aktualisieren

9

In meinem CMake-Projekt stelle ich Boost einen Standardpfad zur Verfügung, der vom Benutzer bearbeitet werden kann.

%Vor%

Danach versuche ich die libs mit:

zu finden %Vor%

Dies funktioniert gut und viele Cache-Variablen wie Boost_INCLUDE_DIR , Boost_LIBRARY_DIRS oder Boost_THREAD_LIBRARY_DEBUG werden generiert.

Mein Problem tritt auf, wenn ich versuche, die Cache-Variable PATH_BOOST zu ändern: Die von FindBoost.cmake generierten Cache-Variablen werden nicht aktualisiert. Das Skript FindBoost.cmake scheint erneut aufgerufen zu werden (es werden Nachrichten über gefundene Komponenten gedruckt). Ich denke, die Variablen wie Boost_INCLUDE_DIR werden nicht aktualisiert, weil sie sich im Cache befinden.

Gibt es eine Möglichkeit, zu cmake zu sagen: "Wenn der Pfad vom Benutzer geändert wird, muss das Paket durch Erzwingen der Cache-Variablen neu gefunden werden?"

Gibt es auch eine bessere Möglichkeit, eine Cache-Variable zu erkennen, die gerade geändert wurde als die folgende hässliche Idee? : - /

%Vor%     
Caduchon 06.02.2015, 12:14
quelle

1 Antwort

0

Ich denke, ich habe das gleiche Problem wie du. Mein Setup versucht, eine bestimmte Version eines Pakets zu finden:

%Vor%

Das Skript für die Paketkonfiguration legt die zwischengespeicherte Variable MYPACK_LIBRARIES fest, die dann zu einem späteren Zeitpunkt verwendet wird. Wenn ich jedoch die Variable MYPACK_REQUIRED_VERSION ändere, benutze immer noch den alten MYPACK_LIBRARIES , anstatt nach der neuen Version zu suchen.

Ich glaube, ich habe das Problem jetzt gelöst, indem ich diese Cache-Variable unscharf geschaltet habe:

%Vor%

Dies scheint die Prozedur find_package in meinem Fall erneut auszulösen. Es gibt einige feinere Details der find_package -Prozedur, die ich nicht vollständig verstehe, also könnte das in Ihrem Fall nicht funktionieren, aber es könnte einen Versuch wert sein.

    
Paul 05.10.2015 09:19
quelle

Tags und Links