CMake is a cross-platform build system generator. Projects specify their build process with platform-independent CMake listfiles included in each directory of a source tree with the name
CMakeLists.txt. Users build a project by using CMake to generate a build system for a native tool on their platform.
Lets assume we have a simple app with a
single .c file.
We by creating a
CMakeLists.txt file in the root of our project.
cmake_minimum_required(VERSION 2.8) project(app_project) add_executable(myapp main.c) install(TARGETS myapp DESTINATION bin)
add_executable:defines our binary with all linked source files. (针对 c/cpp 文件，生成可执行 bin 文件)
install:tells cmake to install our binary into the
bindirectory of the install directory.
CMake supports out-of-source builds — so all our compiled code goes into a directory separate to the sources.
To start a build we create a new folder:
mkdir _build cd _build
And call cmake with the path to the project’s root (in this case the parent folder):
By default cmake will install our build into the system directories.
To define a
custom install directory we simply pass
-DCMAKE_INSTALL_PREFIX to cmake:
cmake .. -DCMAKE_INSTALL_PREFIX=../_install
To run the build script you can simply use the Makefile:
make make install
We can now run our binary from the install directory:
If we wanted to use a different generator we pass it to cmake using the
cmake .. -GXcode
Building our own library. Use
cmake_minimum_required(VERSION 2.8) project(libtest_project) add_library(test STATIC test.c) install(TARGETS test DESTINATION lib) install(FILES test.h DESTINATION include)
CMake will build the library as libtest.a and install it into lib folder of the install directory.