2016-09-01 4 views
0

Ich habe CMakeLists.txt-Datei, die unter Quellcodeverwaltung ist. Um Cross-Compiling zu machen, muss ich viele Optimierungen vornehmen, so dass alle Optionen wie -DCMAKE_SYSTEM_PROCESSOR=armhf usw. nicht in das Kommandozeilenlimit passen. Zur Umgehung habe ich der Datei CMakeLists.txt im Stammverzeichnis alle Optionen hinzugefügt. Sie sehen aus wieVerarbeitung zusätzlicher CMake-Dateien mit CMake

if(TWEAK_PROJECT_XXX) 
    set(CMAKE_SYSTEM_PROCESSOR armhf CACHE STRING "") 
... 
endif() 

Natürlich kann ich diese Optimierungen nicht an die Quellcodeverwaltung übergeben. Allerdings ist SVN Kommandozeile nicht zulassen, einige Dateien auszuschließen, wenn ein Patch wie machen:

svn diff --diff-cmd=diff -x -U999999 > full.diff 

Und ich brauche volle diff, so kann ich nicht für die es TortoiseSVN GUI (keine solche Möglichkeit in GUI, AFAIK). Also muss ich das diff manuell ändern, um die Änderungen von CMakeLists.txt auszuschließen. Das ist unbequem.

Als Lösung denke ich daran, die Tweaks in eine separate Datei zu verschieben, nicht unter die Quellcodeverwaltung (und sie in SVN zu ignorieren) und eine Befehlszeilenoption an CMake zu übergeben, um diese Datei zuerst zu verarbeiten. Ist das möglich? Wie?

+0

Verwenden Sie eine Cache-Datei und laden Sie sie über 'cmake -C '. https://cmake.org/cmake/help/v3.6/manual/cmake.1.html – usr1234567

+0

@ usr1234567, ich denke, Sie können dies als Antwort posten, nur eine knifflige Sache merken: cmake '-C' Option sollte gefolgt von dem Namen der Cache-Datei ohne Leerzeichen wie '-CTweaks.txt'. –

+0

Gemäß der Dokumentation könnte der Space eingefügt werden. Wenn Sie dies mit einem minimalen Beispiel mit dem neuesten CMake reproduzieren können, melden Sie bitte einen Fehler. – usr1234567

Antwort

1

CMake bietet an, eine Datei mit Variablen und ihren Werten zu laden, um sie als Basis für ihren Cache zu verwenden.
Verwenden einer solchen Cache-Datei und laden Sie sie über

cmake -C <cachefile> 

Dokumentation: cmake.org/cmake/help/v3.6/manual/cmake.1.html

Ähnliche, Sie load_cache verwenden könnte aber es würde nicht den Bedürfnissen in Ihrem speziellen Fall entsprechen.

Verwandte Themen