如何在VS Code+CMakeTools中调整可执行文件输出或运行目录?
CMake项目在VS Code里指定可执行文件位置或运行目录的方法
需求1:把可执行文件输出到非构建目录并运行
直接修改CMakeLists.txt即可,CMake自带输出路径配置:
- 给单个目标设置路径:用
set_target_properties指定RUNTIME_OUTPUT_DIRECTORY,比如你的可执行目标叫MyApp:
add_executable(MyApp main.cpp) # 将可执行文件输出到项目根目录的bin文件夹 set_target_properties(MyApp PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin" )
- 全局设置所有目标:如果项目有多个可执行文件,直接全局配置输出路径:
# 所有可执行文件统一输出到项目根目录的bin目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
修改后,CMakeTools构建时会自动把可执行文件放到指定目录,之后在VS Code的运行配置中指向这个路径的可执行文件就能直接运行。
需求2:保留可执行文件在构建目录,但指定运行时的工作目录
修改VS Code的launch.json配置,添加cwd字段指定工作目录:
- 打开运行和调试面板,点击「创建launch.json文件」,选择C++相关的模板
- 在生成的配置中加入
cwd字段,填写你需要的工作目录,比如项目根目录:
{ "version": "0.2.0", "configurations": [ { "name": "CMake: MyApp", "type": "cppdbg", "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", // 这里填写目标工作目录,比如项目根目录 "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "${command:cmake.build}" } ] }
这样启动运行或调试时,程序会从cwd指定的目录读取资源、输出文件,可执行文件本身仍留在构建目录中。
如果你习惯使用CMakeTools的「Run」按钮,也可以在.vscode/settings.json里全局配置工作目录:
{ "cmake.debugConfig": { "cwd": "${workspaceFolder}/data" // 填写目标工作目录 } }
内容的提问来源于stack exchange,提问作者Omroth
相关产品推荐
相关产品推荐

