一、简介
CMake是一款跨平台的 通过CMakeList.txt构建Makefile的工具。
入门代码:
https://github.com/ttroy50/cmake-examples
- CMake安装过程本文不作讲解。
- CMake版本:3.5
二、第一个简单入门程序
1. 建立一个main.cpp文件
<code>#include int main(int argc, char *argv[]) { std::cout << "Hello CMake!" << std::endl; return 0; } /<code>
2. 创建 CMakeLists.txt 文件
<code># Set the minimum version of CMake that can be used # To find the cmake version run # $ cmake --version cmake_minimum_required(VERSION 3.5) # Set the project name project (hello_cmake) # Add an executable add_executable(hello_cmake main.cpp) /<code>
3. 构建过程
<code>cmake . make ./hello_make /<code>
构建后目录示例:tree
<code># tree . ├── build │ ├── CMakeCache.txt │ ├── CMakeFiles │ │ ├── 3.16.3 │ │ │ ├── CMakeCCompiler.cmake │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ ├── CMakeSystem.cmake │ │ │ ├── CompilerIdC │ │ │ │ ├── a.out │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ └── tmp │ │ │ └── CompilerIdCXX │ │ │ ├── a.out │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ └── tmp │ │ ├── cmake.check_cache │ │ ├── CMakeDirectoryInformation.cmake │ │ ├── CMakeOutput.log │ │ ├── CMakeTmp │ │ ├── feature_tests.bin │ │ ├── feature_tests.cxx │ │ ├── hello_cmake.dir │ │ │ ├── build.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── CXX.includecache │ │ │ ├── DependInfo.cmake │ │ │ ├── depend.internal │ │ │ ├── depend.make │ │ │ ├── flags.make │ │ │ ├── link.txt │ │ │ ├── main.cpp.o │ │ │ └── progress.make │ │ ├── Makefile2 │ │ ├── Makefile.cmake │ │ ├── progress.marks │ │ └── TargetDirectories.txt │ ├── cmake_install.cmake │ ├── hello_cmake │ └── Makefile ├── CMakeLists.txt └── main.cpp/<code>
三、CMakeList.txt文件说明
1.
cmake_minimum_required(VERSION 3.5)
定义最小需要的cmake版本
2.
project (hello_cmake)
定义项目名称
3. 定义项目需要的源文件
<code>add_executable(hello_cmake main.cpp)/<code>
4. 引用变量
<code>cmake_minimum_required(VERSION 2.6) project (hello_cmake) add_executable(${PROJECT_NAME} main.cpp)/<code>
这里${PROJECT_NAME}用来引用项目名称。
5. 可执行文件目录
可以在当前文件夹执行cmake .,这样生成的可执行文件在当前目录下;
也可以不在源码目录来构建,如:
<code>mkdir build cd build cmake .. make ./hello_make /<code>
这样生成的可执行文件和CMake的文件都在build下。