Visual Studio 环境变量配置

本文主要记录了一些关于 Visual Studio 的环境变量的配置,本文使用的版本是 VS 2015.

VS 的项目结构

  Visual Studio 主要由两层结构,最大的一层是 解决方案 (Solution),一个 解决方案 可以包含多个 项目 (Project)。可以在一个已有的 Solution 里添加 Project.


VS 平台选项

  VS 由 DebugRelease 两种模式,一般在开发阶段都使用 Debug,而在最后的发布阶段使用 Release。在目标平台选项主要有 x64x86 两种。模式和平台相互组合就会产生 4 种方式。可根据需要进行环境变量的配置。


项目属性配置

  在某个项目上(是项目,非解决方案)右键属性,选中左侧 VC++目录,右侧会出现一些路径的配置。主要有 可执行文件目录包含目录引用目录库目录等等。在安装 VS 的时候,VS 已经将一些依赖的目录命名到一些宏了(就是类似于系统的环境变量之类的变量,与 C++ 的宏不一样),因此上面这些 可执行文件目录 等都包含了一些宏,作为默认的查找路径,如果自己的项目需要额外引入其他的依赖,则需要在对应的目录里添加自己的路径。比如,C++ 中调用 Python 的项目需要 Python.hpython27.lib,因此就将这两个文件所在的路径分别添加进 包含目录库目录。上面的每一个目录都是和环境变量的某个变量对应的。比如,包含目录 与 环境变量 INCLUDE 对应,库目录 与 环境变量 LIB 对应。
Note: 当选用 Debug 模式时,编译的时候会报找不到 python27_d.lib 的错,这是因为我们下载的 python 都是 Release 版本的。因此只有 python27.lib 没有 python27_d.lib解决方法


包含目录、附加包含目录以及库目录和附加库目录的区别

在 VS 中,右键一个 Project,可以发现有两个地方设置 Include 的相关目录:

VC++ Directories -> Include Directories
C/C++ -> General -> Additional Include Directories

同理,设置 Lib 也有两个地方

VC++ Directories -> LibraryDirectories
Linker -> General -> Additional Library Directories

应该如何设置呢?
MSDN 对这两个条目的解释如下

“VC++ Directories -> Include Directories” : Directory settings displayed in the window are the directories that Visual Studio will search for include files referred to in your source code files. Corresponds to environment variable INCLUDE.
“C/C+±> General -> Additional Include Directories”: The directory to be added to the list of directories searched for include files.

编译器在编译过程中查找包含目录(Include 文件)的顺序:

The compiler searches for directories in the following order:
1. Directories containing the source file.
2. Directories specified with the /I option, in the order that CL encounters them.
3. Directories specified in the INCLUDE environment variable.

其中 step2 中的 /I 是由 C/C++ -> General -> Additional Include Directories 设置的。
而 step3 中的 INCLUDE 是由 VC++ Directories -> Include Directories 设置的。
所以从这里看出,不同的设置有不同的编译链接顺序。

因此,总结出两种设置方法:

VC++ Directories -> Include Directories 配合 VC++ Directories -> LibraryDirectories
C/C++ -> General -> Additional Include Directories 配合 Linker -> General -> Additional Library Directories

但是要注意,由于编译顺序,这种用法情况下需要确保在 VC++ Directories -> Include Directories 中填入 $(IncludePath) (继承其他 Include 路径).

Lib 的设置与 Include 同理。


参考文章

visual studio配置中包含目录和附加包含目录的区别以及auto-linking
VS属性配置和auto-linking


文章作者: taosean
文章链接: https://taosean.github.io/2018/11/26/Visual-Studio-Configuration/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 taosean's 学习之旅