Wie verwende ich CMake?

102

Ich versuche CMake zu verwenden, um opencv zu kompilieren.

Ich lese das Tutorial , kann aber nicht verstehen, was CMakeLists-Dateien sind und wie sie mit der GUI von CMake verbunden sind.

Konnte auch nicht verstehen, was Makefiles sind, sind sie die gleichen wie CMakeLists?

Und welche Datei habe ich am Ende mit Visual-Studio geöffnet?

lital maatuk
quelle
Wenn sich die Frage auf Windows bezieht, sollte dies darin erwähnt werden (möglicherweise mit einem windowsTag)
Basile Starynkevitch
In Bezug auf CMake 3.13.3, Plattform Windows und IDE Visual Studio 2017 schlage ich Folgendes vor: wikihow.com/Use-CMake Grüße.
George Theodosiou

Antworten:

30

CMake nimmt eine CMakeList-Datei und gibt sie in einem plattformspezifischen Build-Format aus, z. B. einem Makefile, Visual Studio usw.

Sie führen CMake zuerst in der CMakeList aus. Wenn Sie mit Visual Studio arbeiten, können Sie das Ausgabeprojekt / die Ausgabelösung laden.

holtavolt
quelle
2
Was ist das Makefile? Wo finde ich die Projekt- / Lösungsdatei für visualstudio?
Lital Maatuk
3
Nachdem Sie cmake (oder CMakeSetup ausgeführt und auf generate geklickt haben) sollten Sie in der Lage sein, das Makefile (falls Unix) oder die Projektdateien irgendwo im Projektbaum zu finden. Der Speicherort kann in der CMakeList angegeben werden. Hier ist eine kurze Präsentation, die ich im CMake-Wiki gefunden habe und die Sie vielleicht hilfreich finden: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake konfiguriert das gesamte Projekt in einem Build-Format Ihrer Wahl, dh es richtet alles so ein, dass Sie beispielsweise Visual Studio zum Kompilieren verwenden können. Standardmäßig (zumindest unter Linux) wird ein Projekt erstellt, das stattdessen Make verwendet. Make wird verwendet, um das Projekt tatsächlich zu erstellen, nicht um es zu konfigurieren oder einzurichten. Zuerst müssten Sie CMake verwenden, um das Projekt einzurichten, und dann Make ausführen, um Inhalte zu kompilieren und zu erstellen.
leinaD_natipaC
156

Ich weiß nichts über Windows (habe es nie benutzt), aber auf einem Linux-System müssen Sie nur ein Build-Verzeichnis erstellen (im obersten Quellverzeichnis).

mkdir build-dir

geh hinein

cd build-dir

Führen Sie dann aus cmakeund zeigen Sie auf das übergeordnete Verzeichnis

cmake ..

und endlich rennen make

make

Beachten Sie, dass makeund cmakeverschiedene Programme sind. cmakeist ein MakefileGenerator und das makeDienstprogramm wird von einer MakefileTextdatei gesteuert . Siehe cmake & make Wikipedia-Seiten.

NB: Unter Windows cmakefunktioniert es möglicherweise und muss möglicherweise anders verwendet werden. Sie müssen die Dokumentation lesen (wie ich es für Linux getan habe)

Basile Starynkevitch
quelle
Was ist der Unterschied zwischen cmake und make? sind sie verschiedene Programme?
Lital Maatuk
4
Gute Antwort; Ich konnte nicht herausfinden, wie ich die Build-Dateien in ein Unterverzeichnis bekomme. Ich verstehe nicht, warum die offizielle Dokumentation dies nicht erwähnt.
TheBigB
Dies funktioniert unter Linux, aber unter Windows bricht es beim Erkennen des C / C ++ - Compilers ab. Irgendwelche Ideen, wie das geht?
Bartlomiej.n
Dies hängt davon ab, wie Ihr bestimmter Computer eingerichtet ist. Überprüfen Sie, ob Ihre PATHVariable korrekt ist. Übrigens habe ich Windows in meinem Leben nie benutzt (und 1974 mein erstes Programm geschrieben)
Basile Starynkevitch
2
So viele positive Stimmen und die Antwort sagt nichts über Visual Studio aus.
Abyx
10

Ja, cmake und make sind verschiedene Programme. cmakeist (unter Linux) ein Makefile- Generator (und Makefile -s sind die Dateien, die das makeDienstprogramm steuern). Es gibt andere Makefile- Generatoren (insbesondere configure und autoconf etc ...). Außerdem finden Sie andere Build-Automatisierungsprogramme (z . B. Ninja ).

Basile Starynkevitch
quelle
Ich finde das etwas verwirrend. cmake ist ein Build-System-Generator, und eines der Dinge, die er generieren kann, sind Makefiles (wie in gnu.org/software/make ). Es gibt jedoch viele andere Systeme, die es generieren kann, und sie sind keine "Makefile-Generatoren". Wenn Sie auf macos (und wahrscheinlich überall sonst) cmake --help ausführen, erhalten Sie eine lange Liste der Generatoren. Zum Beispiel kann cmake Xcode-Projekte generieren - nichts mit make zu tun.
James Moore
0

In Bezug auf CMake 3.13.3, Plattform Windows und IDE Visual Studio 2017 empfehle ich dieses Handbuch . Kurz
gesagt schlage ich vor: 1. cmake herunterladen> entpacken> ausführen.
2. Laden Sie als Beispiel GLFW herunter> entpacken Sie es> erstellen Sie es im Ordner Build .
3. Durchsuchen Sie in cmake "Quelle"> Durchsuchen Sie "Erstellen"> Konfigurieren und Generieren.
4. Erstellen Sie in Visual Studio 2017 Ihre Lösung.
5. Holen Sie sich die Binärdateien.
Grüße.

George Theodosiou
quelle