简单的 Hello World 项目

给定定义 main() 函数的 C++源文件 main.cpp,附带的 CMakeLists.txt 文件(具有以下内容)将指示 CMake 为当前系统和默认 C++编译器生成适当的构建指令。

main.cpp C++ Hello World 示例

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.4)

project(hello_world)

add_executable(app main.cpp)

See it live on Coliru

  1. cmake_minimum_required(VERSION 2.4) 设置评估当前脚本所需的最小 CMake 版本。

  2. project(hello_world) 启动了一个新的 CMake 项目。这将触发大量内部 CMake 逻辑,尤其是检测默认的 C 和 C++编译器。

  3. 使用 add_executable(app main.cpp) 创建一个构建目标 app,它将调用配置的编译器,并使用当前设置的一些默认标志来编译来自给定源文件 main.cpp 的可执行文件 app

命令行 (In-Source-Build,不推荐)

> cmake .
...
> cmake --build .

cmake . 执行编译器检测,评估给定 . 目录中的 CMakeLists.txt,并在当前工作目录中生成构建环境。

cmake --build . 命令是必要的构建/调用调用的抽象。

命令行 (Out-of-source,推荐)

为了保持源代码不受任何构建工件的影响,你应该执行源外构建。

> mkdir build
> cd build
> cmake ..
> cmake --build .

或者 CMake 也可以从上面的示例中抽象出你的平台 shell 的基本命令:

> cmake -E make_directory build
> cmake -E chdir build cmake .. 
> cmake --build build