在VS Code中运行CMake之前的源环境变量

bq9c1y66  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(196)

我正在尝试使用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文件或创建自己的工具包。但没有解决方案为我工作,或者我没有完全理解解决方案:

2w2cym1i

2w2cym1i1#

这取决于您的环境设置脚本的逻辑有多复杂。如果没有控制流,它只是设置一些环境变量,这很容易处理:
在这种简单的情况下,我建议尝试使用CMake Presets。configure presets可以有一个environment属性,您可以在其中定义环境变量。对于库路径,这取决于您使用这些库路径的确切方式。如果是find_package调用,我认为您可以使用cacheVariables configure preset属性并设置CMAKE_PREFIX_PATH。或者您可以直接使用CMAKE_CXX_FLAGS设置链接标志。
您可以查看的另一种机制是CMake Tools的设置-其中cmake.environmentcmake.configureEnvironmentcmake.buildEnvironmentcmake.testEnvironment可能会感兴趣。
如果这些对你不起作用,或者不适合你的用例,那么我认为你只需要尝试从一个环境中启动VS Code,该环境已经提供了环境设置脚本,这样它就可以继承这些环境变量。

相关问题