¿Cómo uso CMake?

102

Estoy tratando de usar CMake para compilar opencv.

Estoy leyendo el tutorial pero no entiendo qué son los archivos CMakeLists y cómo está conectado a la interfaz gráfica de usuario de CMake.

Tampoco podía entender qué son los archivos MAKE, ¿son lo mismo que CMakeLists?

¿Y qué archivo es el que finalmente abro con visual-studio?

lital maatuk
fuente
Si la pregunta está relacionada con Windows, eso debería mencionarse en ella (tal vez con una windowsetiqueta)
Basile Starynkevitch
Con respecto a CMake 3.13.3, plataforma Windows e IDE Visual Studio 2017, sugiero: wikihow.com/Use-CMake Regards.
George Theodosiou

Respuestas:

30

CMake toma un archivo CMakeList y lo envía a un formato de compilación específico de la plataforma, por ejemplo, un Makefile, Visual Studio, etc.

Primero ejecuta CMake en CMakeList. Si está en Visual Studio, puede cargar el proyecto / solución de salida.

Holtavolt
fuente
2
¿Qué es el Makefile? ¿Dónde encuentro el archivo de proyecto / solución para visualstudio?
lital maatuk
3
Después de ejecutar cmake (o CMakeSetup y presionar generar), debería poder encontrar el Makefile (si es unix) o los archivos del proyecto en algún lugar del árbol del proyecto. La ubicación se puede especificar en CMakeList. Aquí hay una breve presentación que encontré en la wiki de CMake que puede resultarle útil: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake configura todo el proyecto utilizando un formato de compilación de su elección, lo que significa que configura todo para que pueda usar, por ejemplo, Visual Studio para compilar. De forma predeterminada (al menos en Linux), crea un proyecto que usa Make en su lugar. Make se usa para construir realmente el proyecto, no para configurarlo o configurarlo. Entonces, primero tendrías que usar CMake para configurar el proyecto, luego ejecutar Make para compilar y construir cosas.
leinaD_natipaC
156

No sé sobre Windows (nunca lo usé), pero en un sistema Linux solo tiene que crear un directorio de compilación (en el directorio de origen superior)

mkdir build-dir

entra dentro

cd build-dir

luego ejecute cmakey apunte al directorio principal

cmake ..

y finalmente correr make

make

Observe que makey cmakeson programas diferentes. cmakees un Makefilegenerador, y la makeutilidad se rige por un Makefilearchivo textual. Consulte cmake & make páginas de wikipedia.

NB: en Windows, cmakepodría funcionar, por lo que podría ser necesario usarlo de manera diferente. Deberá leer la documentación (como hice yo para Linux)

Basile Starynkevitch
fuente
¿Cuál es la diferencia entre cmake y make? ¿Son programas diferentes?
lital maatuk
4
Gran respuesta; No pude averiguar cómo obtener los archivos de compilación en un subdirectorio. No entiendo por qué la documentación oficial no menciona esto.
TheBigB
Esto funciona en Linux, pero en Windows se rompe al detectar el compilador C / C ++. ¿Alguna idea de cómo hacer eso?
bartlomiej.n
Depende de cómo esté configurada su computadora en particular . Comprueba que tu PATHvariable sea ​​correcta. Por cierto, nunca usé Windows en mi vida (y escribí mi primer programa en 1974)
Basile Starynkevitch
2
Tantos votos a favor y la respuesta no dice nada sobre Visual Studio.
Abyx
10

Sí, cmake y make son programas diferentes. cmakees (en Linux) un generador de Makefile (y Makefile -s son los archivos que controlan la makeutilidad). Hay otros generadores de Makefile (en particular configure y autoconf, etc.). Y puede encontrar otros programas de automatización de compilación (por ejemplo, ninja ).

Basile Starynkevitch
fuente
Creo que esto es un poco confuso. cmake es un generador de sistema de compilación, y una de las cosas que puede generar son archivos MAKE (como en gnu.org/software/make ). Sin embargo, hay muchos otros sistemas que puede generar y no son "generadores de Makefile". En macos (y probablemente en cualquier otro lugar), si ejecuta cmake --help, obtendrá una larga lista de los generadores que tiene. Por ejemplo, cmake puede generar proyectos Xcode, nada que ver con make.
James Moore
0

Con respecto a CMake 3.13.3, plataforma Windows e IDE Visual Studio 2017, sugiero esta guía . En resumen, sugiero:
1. Descargar cmake> descomprimirlo> ejecutarlo.
2. Como ejemplo, descargue GLFW> descomprímalo> cree dentro de la carpeta Build .
3. En cmake, busque "Fuente"> Examine "Construir"> Configurar y generar.
4. En Visual Studio 2017, cree su solución.
5. Obtenga los binarios.
Saludos.

George Theodosiou
fuente