在 VS Code 中运行 CMake 之前获取环境变量

Aru*_*ual 5 c++ cmake visual-studio-code

我正在尝试使用 Visual Studio Code 中的 CMake 工具和 C/C++ 扩展在 VS Code 中构建大型 C++ 框架。我正在浏览 stackoverflow/github issues/any google suggest,看起来我不是第一个遇到这种情况的人,但我一生都无法弄清楚我做错了什么。

问题就在这里。我希望以某种方式设置 VS Code,以便能够使用内置工具/扩展直接从 VS Code 构建框架(它是 C++)。这是我到目前为止使用的过程(在 Linux 的标准终端中),它也可以在 VS Code 中运行的终端中运行:

cd /path-to-project-main-folder
source scripts/env.sh
cmake .
make -j 10
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当我设置 VS Code 时,打开框架所在的文件夹,VS Code 识别出它是 cmake 项目,并给了我构建它的机会。问题是,当我尝试构建它时,它没有首先设置环境,因此使用了错误的 cmake (不是源代码,而是服务器中的默认构建)以及错误的库,其中一些库甚至无法识别。问题出在第一行:

source scripts/env.sh
Run Code Online (Sandbox Code Playgroud)

环境变量的设置以及PATH一些库和程序的位置。在 cmake 和 build 之前,VS Code 不会运行此行。有谁知道如何配置 CMake 工具扩展来运行的解决方案:

source scripts/env.sh
Run Code Online (Sandbox Code Playgroud)

运行 cmake 然后 make 之前的行?

我正在研究一些使用tasks.json、settings.json 文件或创建我自己的工具包的解决方案。但没有一个解决方案对我有用,或者我没有完全理解该解决方案:

sta*_*all 0

这在某种程度上取决于您的环境设置脚本的逻辑有多复杂。如果没有控制流,它只是设置一些环境变量,那么按照惯用方式来说,这很容易处理:

在这种简单的情况下,我建议尝试使用 CMake Presets。配置预设可以有一个environment属性,您可以在其中定义环境变量。对于库路径,这取决于您使用这些库路径的准确程度。如果是为了find_package通话,我认为您可能可以使用cacheVariables配置预设属性并设置CMAKE_PREFIX_PATH。或者也许您可以直接使用设置链接标志CMAKE_CXX_FLAGS

您可以查看的另一种机制是CMake 工具的设置- 其中cmake.environmentcmake.configureEnvironmentcmake.buildEnvironmentcmake.testEnvironment可能您感兴趣。

如果这些不适合您或不适合您的用例,那么我认为您只需尝试从已获取该环境设置脚本的环境中启动 VS Code,以便它可以继承这些环境变量。