运行CMake后打包项目迁移至其他位置如何仍可直接执行make
解决方案
你遇到的错误本质是CMake本地生成的Makefile会硬编码源目录、构建目录的绝对路径,移动项目位置后路径不匹配就会触发配置校验报错。最稳妥的适配方案如下,完全符合老师要求的执行流程,无需修改评测脚本:
方案:手写顶层极简Makefile调度CMake构建
你不需要手动写全量编译规则,只需要在项目根目录新增一个手写的轻量Makefile,用来自动触发CMake配置和构建即可,步骤如下:
- 清空你本地之前CMake生成的所有缓存文件:
CMakeCache.txt、CMakeFiles目录、cmake_install.cmake、CMake生成的Makefile等,这些本地临时文件不要打包进最终的压缩包 - 在项目根目录新建名为
Makefile的文件,内容如下:
.PHONY: all clean all: vm # 触发子目录构建,把生成的vm可执行文件拷贝到根目录 vm: build_dir make -C build cp build/vm ./vm # 自动创建构建目录、执行CMake生成构建规则 build_dir: mkdir -p build cd build && cmake .. clean: rm -rf build vm
- 最终打包的内容仅需要包含:你写的虚拟机源码、项目的
CMakeLists.txt、上述手写的顶层Makefile即可
验证方式
打包完成后,把压缩包移动到任意其他目录解压,执行老师要求的命令即可正常运行:
unzip virtual_machine.zip cd virtual_machine make ./vm
整个流程中CMake的执行被封装在Makefile规则里,评测老师完全感知不到,完全符合作业要求。
内容的提问来源于stack exchange,提问作者Tristan
相关产品推荐
相关产品推荐

