我正在尝试使用Visual Studio Code中的CMake工具和C/C扩展在VS Code中构建一个大型C框架。我正在浏览stackoverflow/github issues/任何谷歌建议,看起来我不是第一个遇到这种情况的人,但我一生都不知道我做错了什么。
这就是问题所在。我想设置VS代码的方式,能够建立框架(它是C++)的权利,从VS代码使用内置的工具/扩展。以下是我到目前为止使用的进程(在Linux的标准终端中),它也可以在VS Code中运行的终端中工作:
cd /path-to-project-main-folder
source scripts/env.sh
cmake .
make -j 10
现在的问题是,当我设置VS Code时,打开框架所在的文件夹,VS Code识别出它是cmake项目,并给我机会构建它。问题是,当我尝试构建它时,它没有首先设置环境,因此使用了错误的cmake(不是源代码中的cmake,而是服务器中构建的默认cmake)以及错误的库,其中一些库甚至无法识别。问题出在第一行:
source scripts/env.sh
其中设置了环境变量,还对一些库和程序进行了PATH
。在cmake和build之前,VS Code不会运行这一行。有没有人知道如何配置CMake Tools扩展的解决方案:
source scripts/env.sh
行,然后运行cmake和make?
我正在寻找一些解决方案,使用tasks.json,settings.json文件或创建自己的工具包。但没有解决方案为我工作,或者我没有完全理解解决方案:
- https://github.com/microsoft/vscode-cmake-tools/blob/HEAD/docs/tasks.md
- https://github.com/microsoft/vscode-cmake-tools/issues/2243
- https://github.com/microsoft/vscode-cmake-tools/pull/995
- VSCode: Set environment variables via script and man pages of CMake Tools,VS Code,.
- VScode remote development: How can I run a build task to source environment variables before running the real build task?--->但我使用cmake
- VSCode, how to source environment variable files like setup.bash?
1条答案
按热度按时间2w2cym1i1#
这取决于您的环境设置脚本的逻辑有多复杂。如果没有控制流,它只是设置一些环境变量,这很容易处理:
在这种简单的情况下,我建议尝试使用CMake Presets。configure presets可以有一个
environment
属性,您可以在其中定义环境变量。对于库路径,这取决于您使用这些库路径的确切方式。如果是find_package
调用,我认为您可以使用cacheVariables
configure preset属性并设置CMAKE_PREFIX_PATH
。或者您可以直接使用CMAKE_CXX_FLAGS
设置链接标志。您可以查看的另一种机制是CMake Tools的设置-其中
cmake.environment
,cmake.configureEnvironment
,cmake.buildEnvironment
和cmake.testEnvironment
可能会感兴趣。如果这些对你不起作用,或者不适合你的用例,那么我认为你只需要尝试从一个环境中启动VS Code,该环境已经提供了环境设置脚本,这样它就可以继承这些环境变量。