——系统属性表(X64和win32之间各自独立,无继承关系)
问题:
- 在visual studio中配置第三方代码库时涉及到包含目录、附加包含目录和库目录,那么Include Directories和Additional Include Directories,以及Library Directories和Additional Library Directories作用是什么?
- 系统属性表的包含目录、附加包含目录与项目的包含目录附加包含目录又怎样的继承关系?如何设置呢?
VS中C++的包含目录、附加包含目录和库目录以及附加库目录:
-
作用
包含目录、附加包含目录:寻找代码中头文件所在的搜索目录,目录不是头文件。
库目录、附加库目录:寻找.lib文件的搜索目录
附加依赖项:lib库(C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译后,*.cpp,*.cc,*.c会被打 包成一个.lib文件,这样可以保护源代码)
-
区别
MSDN上的解释如下:
The compiler searches for directories in the following order:
- Directories containing the source file.
- Directories specified with the Additional Include Directories.
- Directories specified in the INCLUDE environment variable.
首先:从这里看出,附加二字仅仅对编译过程中头文件的搜索链接顺序有影响,其他方面与包含xx无任何影响!
1、系统属性表中的继承关系:
特点:
- 全局性,对所有项目都会产生继承。
- debug设置和release设置都会互相继承。
2、项目属性表中的继承关系:
特点:
- 局部性,只对本项目负责,对系统属性没有影响。
- debug设置和release设置不会互相继承。
因此,总结出两种设置方法:
第一种:只在 包含目录 设置头文件包含,且只在 库目录 设置库文件路径,然后 附加依赖库 指明库名lib
第二种:只在 附加包含目录 设置头文件包含,且只在 附加库目录 设置库文件路径,然后 附加依赖库 指明库名lib。但是为提高编译时的搜索效率,需要确保在包含目录中填入$(IncludePath),继承VS自身的一些基本头文件。
注:
1、附加库目录+附加依赖项共同构成了lib依赖库的完整路径
2、当需要向项目中添加.dll动态链接库时,
- 方法一:设置dll的环境变量
- 方法二:拷贝dll至exe执行目录.(exe生成目录位置:项目->属性->配置属性->常规->输出目录)。