You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMake构建项目时用make命令调用Ninja执行构建?

用CMake生成兼容Make命令的Ninja代理Makefile

直接通过CMake生成一个代理Makefile,就能让你输入make时自动调用Ninja执行构建,包括make tests这类特定目标的转发,彻底解决Shell别名方案的痛点。

实现步骤:

  1. 创建Makefile模板
    在项目根目录新建Makefile.in文件,内容如下:
# 先检查Ninja是否在系统PATH中
ifeq (, $(shell which ninja))
$(error "Ninja未安装或未加入系统PATH")
endif

# 转发所有make命令到Ninja
%:
	@ninja $@

# 默认目标对应ninja的默认构建
.DEFAULT_GOAL := all
  1. 在CMakeLists.txt中添加生成逻辑
    在项目的主CMakeLists.txt合适位置加入以下配置,让CMake构建时自动生成代理Makefile:
# 生成代理Makefile,将make命令转发给Ninja
configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.in
    ${CMAKE_CURRENT_BINARY_DIR}/Makefile
    @ONLY
)

使用方式:

正常用CMake生成Ninja构建文件即可:

mkdir build && cd build
cmake -G Ninja ..

之后在build目录下,输入make就会自动执行ninja,输入make tests则对应ninja tests,完全兼容你习惯的Make命令格式。

方案优势:

  • 无需手动配置Shell别名或环境变量,每个项目独立配置,克隆后直接构建即可
  • 统一历史项目的构建命令,不管项目原本用什么构建系统,只要用这套配置就能用make调用Ninja
  • 自带Ninja存在性检查,避免因环境问题导致的构建失败

内容的提问来源于stack exchange,提问作者Henrique Bucher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:26:02