Jak używać CMake?

103

Próbuję użyć CMake do skompilowania opencv.

Czytam samouczek, ale nie rozumiem, co to są pliki CMakeLists i jak jest połączone z interfejsem użytkownika CMake?

Nie mogłem też zrozumieć, co to są makefile, czy są takie same jak CMakeLists?

A który to plik, który ostatecznie otwieram w Visual Studio?

lital maatuk
źródło
Jeśli pytanie dotyczy Windowsa, to należy w nim wspomnieć (być może z windowstagiem)
Basile Starynkevitch
Jeśli chodzi o CMake 3.13.3, platformę Windows i IDE Visual Studio 2017, proponuję: wikihow.com/Use-CMake Regards.
George Theodosiou

Odpowiedzi:

31

CMake pobiera plik CMakeList i wyprowadza go do formatu kompilacji specyficznego dla platformy, np. Makefile, Visual Studio itp.

Najpierw uruchamiasz CMake na CMakeList. Jeśli korzystasz z programu Visual Studio, możesz załadować projekt / rozwiązanie wyjściowe.

holtavolt
źródło
2
Co to jest plik Makefile? Gdzie znajdę plik projektu / rozwiązania dla Visualstudio?
lital maatuk
3
Po uruchomieniu cmake (lub CMakeSetup i naciśnięciu przycisku generowania) powinno być możliwe znalezienie pliku Makefile (jeśli jest to unix) lub plików projektu gdzieś w drzewie projektu. Lokalizację można określić w CMakeList. Oto krótka prezentacja, którą znalazłem na wiki CMake, która może okazać się pomocna: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake konfiguruje cały projekt przy użyciu wybranego formatu kompilacji, co oznacza, że ​​konfiguruje wszystko, aby można było na przykład użyć programu Visual Studio do kompilacji. Domyślnie (przynajmniej na Linuksie) tworzy projekt, który zamiast tego używa Make. Make jest używany do faktycznego zbudowania projektu, a nie do jego konfigurowania lub konfigurowania. Więc najpierw musisz użyć CMake, aby skonfigurować projekt, a następnie uruchomić Make, aby skompilować i zbudować coś.
leinaD_natipaC
156

Nie wiem o Windowsie (nigdy go nie używałem), ale w systemie Linux wystarczy utworzyć katalog kompilacji (w górnym katalogu źródłowym)

mkdir build-dir

wejdź do środka

cd build-dir

następnie uruchom cmakei wskaż katalog nadrzędny

cmake ..

i wreszcie uciekaj make

make

Zauważ, że makei cmakesą to różne programy. cmakejest Makefilegeneratorem, a makenarzędziem zarządza Makefileplik tekstowy. Zobacz strony cmake & make wikipedii.

Uwaga: w systemie Windows cmakemoże działać, więc może wymagać innego użycia. Musisz przeczytać dokumentację (tak jak zrobiłem dla Linuksa)

Basile Starynkevitch
źródło
Jaka jest różnica między cmake i make? czy są to różne programy?
lital maatuk
4
Świetna odpowiedź; Nie mogłem wymyślić, jak pobrać pliki kompilacji w podkatalogu. Nie rozumiem, dlaczego oficjalna dokumentacja o tym nie wspomina.
TheBigB
Działa to w systemie Linux, ale w systemie Windows kończy się niepowodzeniem po wykryciu kompilatora C / C ++. Jakieś pomysły, jak to zrobić?
bartlomiej.n
To zależy od konfiguracji konkretnego komputera. Sprawdź, czy PATHzmienna jest poprawna. A tak przy okazji, nigdy w życiu nie korzystałem z Windowsa (pierwszy program napisałem w 1974)
Basile Starynkevitch
2
Tak wiele głosów poparcia, a odpowiedź nie mówi nic o programie Visual Studio.
Abyx
10

Tak, cmake i make to różne programy. cmakejest (w Linuksie) generatorem Makefile (a Makefile -s to pliki sterujące makenarzędziem). Istnieją inne generatory plików Makefile (w szczególności configure i autoconf itp.). Możesz też znaleźć inne programy do automatyzacji kompilacji (np. Ninja ).

Basile Starynkevitch
źródło
Myślę, że to trochę zagmatwane. cmake jest generatorem systemu budowania i jedną z rzeczy, które może generować, są pliki makefile (jak w gnu.org/software/make ). Jest jednak wiele innych systemów, które może generować i nie są to „generatory plików Makefile”. Na macos (i prawdopodobnie wszędzie indziej), jeśli uruchomisz cmake --help, otrzymasz długą listę posiadanych generatorów. Na przykład cmake może generować projekty Xcode - nie ma to nic wspólnego z make.
James Moore
0

Jeśli chodzi o CMake 3.13.3, platformę Windows i IDE Visual Studio 2017, proponuję ten przewodnik . W skrócie sugeruję:
1. Pobierz cmake> rozpakuj go> uruchom.
2. Jako przykład pobierz GLFW> rozpakuj go> utwórz w folderze Build .
3. W cmake Przeglądaj „Źródło”> Przeglądaj „Buduj”> Konfiguruj i generuj.
4. W programie Visual Studio 2017 Zbuduj swoje rozwiązanie.
5. Pobierz pliki binarne.
Pozdrowienia.

George Theodosiou
źródło