如何在CMakeLists.txt中实现-B参数指定生成文件目录的效果
如何在CMake中默认指定构建目录(替代
-B参数的命令行输入) 首先明确:CMake不支持在CMakeLists.txt中直接定义-B参数的行为。因为-B是命令行级别的参数,作用是在CMake启动配置流程前指定构建目录,而CMakeLists.txt是在配置阶段才被解析的,两者的执行顺序决定了无法在项目配置文件中覆盖这个命令行参数的逻辑。
不过可以通过以下几种方式实现“不用每次手动输入-B”的需求:
1. 使用CMake预设(官方推荐)
创建名为CMakePresets.json的文件放在项目根目录,在其中预定义构建目录等配置:
{ "version": 3, "configurePresets": [ { "name": "default", "binaryDir": "${sourceDir}/build", // 这里指定你想要的构建目录 "generator": "Unix Makefiles" // 根据你的环境选择生成器,比如Ninja、Visual Studio 17 2022等 } ] }
之后只需运行以下命令即可自动使用预设的构建目录:
cmake --preset default
2. 封装成脚本文件
如果不想使用CMake预设,可以写简单的脚本封装cmake命令:
- Linux/macOS:创建
build.sh文件
#!/bin/bash # 可根据需求修改build为你想要的目录名 cmake -B build -S .
赋予执行权限后直接运行./build.sh即可。
- Windows:创建
build.bat文件
@echo off cmake -B build -S .
双击运行或在命令行执行build.bat即可。
注意事项
不要尝试在CMakeLists.txt中通过set(CMAKE_BINARY_DIR <目录>)这类方式强行指定构建目录,这会干扰CMake的正常路径逻辑,导致缓存失效、路径引用混乱等问题,属于不规范用法。
内容的提问来源于stack exchange,提问作者Angelos Gkaraleas
相关产品推荐
相关产品推荐

