原标题:长标题:为调试,发动和CMake东西设置环境变量
有时候,你可能会想着自界说一些环境变量。现在许多构建体系都运用到了环境变量来界说其行为,别的,在调试方针程序时,也会需求PATH环境变量来保证相关的依靠项被正确地探测到。
在Visual Studio中有一个内建的机制来自界说环境变量,然后更便利的构建和调试CMake工程。
在最新版Visual Studio 2019 v16.4中,咱们对Visual Studio的JSON装备文件做了一些修正来简化这样的一个进程。
这篇文章将首要叙述怎么重头开始运用这个特性,由于有些人可能对这个特性并不是非常了解。关于那些之前体会过这个特性的人,我主张你先看看下面有关改动的一个快速总结。
> 现有的JSON装备文件将持续有用,可是IntelliSense将会引荐运用新的语法。
> 调试方针将会依据CMakeSettings.json和CppProperties.json的装备的环境进行主动发动。关于自界说使命,仍是和曾经相同,没有一点改动。
> 在launch.vs.json和tasks.vs.json增加了一个新的叫做”env”的tag,调试方针和自界说使命可以正常的运用它们各自独立的环境变量。
> 在CppProperties.json中界说的装备相关的变量将在调试方针和自界说使命中主动被体系提取,这样就不需求像曾经那样需求设置”inheritEnvironments”了。CMakeSettings.json一向都是这样作业的,没什么改动。
关于CMake和C++的Open Folder来说,有两种方法来为它们指定环境变量。
第一种是为整个构建环境设置环境变量。关于CMake工程,可以终究靠修正CMakeSettings.json装备文件来设定环境变量,关于C++ Open Folder,则是修正CppProperties.json装备文件。
环境变量可以设定为工程大局型或许针对特定装备型(可以终究靠下拉列表挑选不同的装备)。这些被界说的大局变量,会在一切阶段被提取,包含CMake编译阶段,自界说使命阶段和方针调试阶段。
在Visual Studio中,环境变量可以正常的运用如下的语法来进行引证:
大局或许特定装备相关的环境变量可以在CMakeSettings.json和CppProperties.json中的”environment”块被界说。举个比如,下面的CMakeSettings.json装备文件中,咱们别离为Debug和Release装备设定了不同的环境变量:
第二种方法首要用来自界说方针调试和自界说使命,可以终究靠别离修正launch.vs.json和tasks.vs.json这两个装备文件来完成。具体来说,就是在装备文件中增加一个”env”的tag,如下图所示:
在上面的比如中,咱们为调试方针增加了一个环境变量来自界说日志的等级。
别的请注意,假如您想对一切调试方针和使命设定环境变量,引荐在CMakeSettings.json和 CppProperties.json界说大局性变量。
我,是一个不爱运用环境变量的人,由于,我总觉得,从某种(刁钻的)视点来说,环境变量提高了构建的耦合性。构建一个项目,因外部环境导致的构建失利,当然是越少越吼啦。
责任编辑: