Die richtige Art und Weise eine Out-of Source Build in mehrteiligen Cmake Projekt zu erhalten

StackOverflow https://stackoverflow.com/questions/1230644

  •  22-07-2019
  •  | 
  •  

Frage

Ich benutze cmake zu bauen, zu testen und mein Projekt installieren. Mein Weg ist ein wenig roh: Ich habe eine Skripte wie diese verwenden, um eine out-of-Source-Build zu erhalten:

DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make 

Ich glaube, ich es zumindest in Make-Datei setzen konnte, aber nicht ist es seltsam, Makefile zu verwenden Cmake laufen neue Makefiles zu generieren und einen anderen laufen zu lassen?

Was ist der richtige Weg, es zu tun? Hat Cmake eine Option zu vermeiden Aufruf "cd"?

Vor kurzem wurde es noch komplizierter, als ich eine Bibliothek factoread heraus, dass Ich mag würde, zu testen und verteilen separat kompilieren. Ich möchte Duplizierung von all dem, was zu vermeiden, die ich in meinem oben CMakeLists.txt haben.

Wie es zu tun richtig mit cmake?

War es hilfreich?

Lösung

Nein, CMake keine solche Option. Ich mag in der Regel einen Wrapper Makefile haben CMake-Anrufungen zu steuern.

Das Hauptproblem dabei ist, dass der Makefile-Generator nicht die Konfiguration Angabe unterstützt beim Laufen machen, wie der Visual Studio-Generator funktioniert. Ich denke, es ist ein Feature-Request für diesen eingereicht, aber es wäre sehr invasives Verfahren zu beheben.

Andere Tipps

Dies scheint die häufigste Form des Umgangs mit dieser zu sein. Ich habe normalerweise gesehen (und verwendet) Batch-Skripten (entweder Shell-Scripting auf Unix, oder einfach nur Batch-Dateien unter Windows) zu handhaben, so ./Build ausgeführt wird die Build-Ordner, CD gibt, laufen Cmake erstellen, bauen, dann gehen zurück in den ursprünglichen Ordner.

Man könnte auch CMake GUI benutzen, die den Build-Ordner werden automatisch erstellen, wenn es nicht vorhanden ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top