ninja 和 cmake合作
以下是一个简单的示例,展示如何将 Ninja 和 CMake 一起使用来构建一个 C++ 项目。
测试源代码例子地址
1. 项目结构
假设你的项目目录结构如下:
/cmake-ninja-test
├── CMakeLists.txt
├── main.cpp
2. main.cpp
示例
main.cpp
示例main.cpp
文件包含一个简单的 "Hello, World!" 程序:
// main.cpp
#include <iostream>
int main() {
std::cout << "Hello, Ninja and CMake!" << std::endl;
return 0;
}
3. CMakeLists.txt
文件
CMakeLists.txt
文件CMakeLists.txt
文件是 CMake 的配置文件,它定义了如何编译项目。以下是一个简单的 CMakeLists.txt
:
# 指定 CMake 的最低版本
cmake_minimum_required(VERSION 3.10)
# 项目信息
project(HelloNinja)
# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
# 添加可执行文件
add_executable(hello main.cpp)
4. 使用 Ninja 和 CMake 构建项目
以下步骤展示如何使用 Ninja 和 CMake 一起构建项目:
步骤 1: 确保安装 Ninja 和 CMake
首先,需要确保系统上安装了 Ninja 和 CMake。你可以使用以下命令来安装它们:
在 Ubuntu/Linux 上:
sudo apt-get install ninja-build cmake
在 macOS 上(使用 Homebrew):
brew install ninja cmake
步骤 2: 使用 CMake 生成 Ninja 构建文件
在项目的根目录 /
cmake-ninja-test 下,运行以下命令来生成 Ninja 构建文件:
cmake -G Ninja .
这个命令告诉 CMake 使用 Ninja 生成 build.ninja
文件。CMake 将根据 CMakeLists.txt
文件生成适用于 Ninja 的构建配置。
步骤 3: 使用 Ninja 构建项目
生成 build.ninja
文件后,使用 Ninja 来构建项目。运行以下命令:
ninja
Ninja 会读取 build.ninja
文件并执行构建过程。你应该会看到以下输出:
[1/1] Linking CXX executable hello
步骤 4: 运行编译生成的可执行文件
一旦构建成功,生成的可执行文件(hello
)将位于项目根目录下。运行它:
./hello
你会看到输出:
Hello, Ninja and CMake!
5. 构建后的目录结构
构建完成后,项目目录的结构会有所变化,可能会包含以下内容:
/cmake-ninja-test
├── CMakeLists.txt
├── build.ninja # Ninja 构建文件
├── hello # 可执行文件
├── main.cpp
├── CMakeCache.txt # CMake 的缓存文件
├── CMakeFiles/ # CMake 生成的辅助文件
6. 常见操作
重新生成 Ninja 文件: 如果修改了
CMakeLists.txt
文件或源代码,可以再次运行cmake -G Ninja .
以重新生成 Ninja 构建文件。并行构建: Ninja 默认会利用多核 CPU 进行并行构建,无需手动指定。如果需要控制并行构建的线程数,可以使用
ninja -j <线程数>
。清理构建文件: 要清理构建生成的文件,可以运行
ninja clean
。
总结
通过这个简单的例子,你可以看到 Ninja 和 CMake 一起使用的基本流程。CMake 负责生成 Ninja 所需的构建配置文件,而 Ninja 提供了高效、快速的构建机制,非常适合大型项目的增量构建需求。
Last updated