¿Qué es CMake?
CMake es un generador de sistemas de compilación multiplataforma. Escribe CMakeLists.txt una vez y luego genera archivos de compilación específicos de la plataforma (Makefile, archivos Ninja, proyectos de Visual Studio y más).
En Linux, un flujo de trabajo típico es:
- Escriba
CMakeLists.txt
- Generar sistema de construcción
- Construir
1
2
3
4
|
mkdir build
cd build
cmake ..
make
|
Plantilla 1: archivo de origen único
1
2
3
4
|
cmake_minimum_required(VERSION 3.5)
project(Demo1)
add_executable(demo1 test01.cpp)
|
Plantilla 2: múltiples archivos fuente
1
2
3
4
|
cmake_minimum_required(VERSION 3.5)
project(Demo2)
add_executable(demo2 main.cpp utils.cpp)
|
Plantilla 3: Incluir directorios + bibliotecas
1
2
3
4
5
6
|
cmake_minimum_required(VERSION 3.5)
project(Demo3)
include_directories(include)
add_executable(demo3 src/main.cpp src/foo.cpp)
target_link_libraries(demo3 pthread)
|
Estructura de proyecto recomendada
1
2
3
4
5
|
project/
CMakeLists.txt
src/
include/
build/
|
Consejos
- Mantenga compilaciones fuera de la fuente (
build/) para evitar contaminar el árbol fuente.
- Utilice los comandos
target_* (target_include_directories, target_link_libraries) para un estilo CMake moderno.
- Fije una versión mínima de CMake para evitar sorpresas de compatibilidad.