我正在尝试使用CMake Tools和Visual Studio Code中的C/C++扩展来在VS Code中构建一个大型的C++框架。我正在浏览stackoverflow/github issues/任何谷歌建议,看起来我不是第一个遇到这个问题的人,但我无法弄清楚我做错了什么。
以下是问题所在。我希望以一种方式设置VS Code,可以使用内置的工具/扩展直接从VS Code中构建该框架(它是C++)。直到现在,我一直使用以下过程(在Linux的标准终端中),并且在VS Code中运行的终端中也可以工作:
cd /path-to-project-main-folder
source scripts/env.sh
cmake .
make -j 10
现在的问题是,当我设置VS Code并打开包含框架的文件夹时,VS Code会识别它为cmake项目,并给我构建它的机会。问题在于,当我尝试构建时,它不会首先设置环境,因此使用错误的cmake(不是源代码中的那个,而是服务器中内置的默认cmake),还使用了错误的库,其中一些甚至无法识别。 问题出在第一行上:
source scripts/env.sh
在哪里设置环境变量以及一些库和程序的PATH
。这行代码在VS Code运行cmake和构建之前不会执行。
有人知道如何配置CMake Tools扩展来运行吗?
source scripts/env.sh
在运行cmake和make之前需要哪些指令?
我正在研究使用tasks.json、settings.json文件或创建自己的工具包来解决问题。但是没有一个解决方案对我有效,或者我没有完全理解这个解决方案。
https://github.com/microsoft/vscode-cmake-tools/blob/HEAD/docs/tasks.md
VSCode: 通过脚本设置环境变量 和 CMake Tools、VS Code 的 man 页面
VScode 远程开发:如何在运行真正的构建任务之前运行一个构建任务来源化环境变量? ---> 但我使用 cmake
source scripts/env.sh && code
或者source scripts/env.sh; code
。我认为,如果VSCode打开了另一个shell,它应该会使用相同的环境变量。 - Milan Š.execute_process()
或add_custom_command()
进行构建前的处理步骤。 - Milan Š.~/.bashrc
。这就是为什么它起作用的原因。add_custom_command()
很可能是你想要的prebuild
步骤。 - Milan Š.