Windows下仿照CLion构建逻辑编写BAT脚本 指定CMake输出路径问题
CMake 自动化构建脚本修复方案
构建输出目录指定方法
CMake 提供-B参数专门用于指定构建产物(包括build.ninja、CMakeCache.txt、cmake_install.cmake等所有中间生成文件)的存储目录,搭配-S参数明确指定源码根目录即可实现路径自定义,不需要额外修改其他配置。
现有报错原因
你遇到的Error: could not load cache报错,是因为构建命令指定的S:\path\to\src\CMakeLists\build\debug目录下不存在CMake缓存文件:你此前执行的cmake生成命令没有指定输出目录,默认会在当前工作目录生成缓存文件,和构建命令读取的路径不匹配。
修复后的完整脚本
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" :: 提前定义路径变量,后续修改更方便 set SRC_ROOT=S:\path\to\src\CMakeLists\codeCore set BUILD_ROOT=S:\path\to\src\CMakeLists\build\debug set CMAKE_PATH=S:\path\to\cmake\cmake.exe set NINJA_PATH=S:\path\to\ninja\ninja.exe :: 切换到源码根目录(非必需,避免相对路径错误) pushd %SRC_ROOT% :: 生成构建配置,-B指定构建输出目录,所有生成文件都会存入该路径 call %CMAKE_PATH% -B %BUILD_ROOT% -S %SRC_ROOT% -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=%NINJA_PATH% -G Ninja :: 执行构建,此时BUILD_ROOT目录下已存在缓存文件,不会再报加载错误 call %CMAKE_PATH% --build %BUILD_ROOT% --target all
补充说明
- 如果需要切换为Release版本,只需修改
CMAKE_BUILD_TYPE参数为Release,同时将BUILD_ROOT修改为对应的build/debugRelease路径即可 - 如果你使用的CMake版本低于3.13,不支持
-B自动创建目录,可以在调用cmake生成命令前加一行md %BUILD_ROOT%手动创建目录
内容的提问来源于stack exchange,提问作者Dariusz
相关产品推荐
相关产品推荐

