参考:官方文档说明
默认属性
创建项目时,系统分配各种属性的值。 根据项目类型和在应用向导中所选的选项类型,默认值会有所不同。默认属性在属性页的“常规”窗格中显示:
MSBuild 支持对某些字符串值(例如包含目录和路径)使用称为宏的编译时常量。 宏可以引用由 Visual Studio 或 MSBuild 系统定义的值,也可以引用用户定义的值。 宏类似于 $(macro-name) 或 %(item-macro-name)。 它们公开在属性页中,可以使用属性编辑器在其中对它们进行引用和修改。 使用宏而不是硬编码的值,例如目录路径。 通过宏,可以更轻松地在计算机之间和 Visual Studio 版本之间共享属性设置。 此外,可以更好地确保项目设置能正确参与属性继承。
使用属性编辑器来修改特定字符串属性,选择宏作为值。
在属性编辑器中,可以选择“宏”按钮查看可用宏及这些宏的当前值 。 下图显示选中“宏”按钮后,“附加包含目录”属性的属性编辑器 。 如果选中“从父级或项目默认设置继承”复选框并添加了新值,则该值会附加到当前被继承的任意值。 如果清除复选框,则新值会替换继承值。 在大多数情况下,选中复选框。
目标平台:指定运行项目的平台。 例如,Windows、Android 或 iOS。
“目标平台版本”:指定用于生成项目的 Windows SDK 的版本。
Windows SDK 版本
输出目录:指定生成工具(如链接器)放置生成过程中创建的所有最终输出文件的目录。 通常,此目录保存链接器、库或 BSCMake 等工具的输出。 默认情况下,此属性是由宏组合 指定的目录 ( S o l u t i o n D i r ) (SolutionDir) (SolutionDir)(Configuration)\。
比如可以看dll和exe生成的位置
中间目录:指定编译器等工具放置生成过程中创建的所有中间文件的目录。 通常,此目录保存 C/C++ 编译器、MIDL 和资源编译器等工具的输出。 默认情况下,此属性是由宏 指定的目录 $(Configuration)\。
目标文件扩展名:指定要用于生成输出的文件扩展名。 应用程序默认为 .exe,静态库默认为 .lib,DLL 默认为 .dll。
将内容复制到 OutDir、将项目引用复制到 OutDir、将项目引用的符号复制到 OutDir、将 C++ 运行时复制到 OutDir
可执行目录
在其中搜索可执行文件的目录。 对应于 PATH 环境变量。
包含目录
在其中搜索源代码中所引用的包含文件的目录。 对应于 INCLUDE 环境变量。
外部包含目录
在编译期间被视为外部或系统文件的包含文件的路径。 在生成最新状态检查时将跳过这些文件。 外部包含属性也使用这些路径。 若要详细了解如何在 IDE 中设置这些选项,请参阅 /external 编译器选项。
引用目录
通过 #using 指令在其中搜索源代码中所引用的程序集和模块(元数据)文件的目录。 对应于 LIBPATH 环境变量。
库目录
要在其中搜索库 (.lib) 文件的目录。 此搜索包括运行时库。 对应于 LIB 环境变量。 此设置不适用于 .obj 文件,若要链接到 .obj 文件,请在“配置属性”>“链接器”>“常规”属性页上选择“其他库依赖项”,然后指定文件的相对路径。 有关详细信息,请参阅链接器属性页。
库 WinRT 目录
搜索用于通用 Windows 平台(UWP) 应用的 WinRT 目录文件的目录。
源目录
在其中搜索用于 IntelliSense 的源文件的目录。
排除目录
Visual Studio 在每次编译之前都会查询所有文件上的时间戳,确定自上次编译后是否修改过任何内容。 如果项目具备一些大型且稳定的库,则通过从时间戳检查中排除这些库,可以潜在地加快生成时间。
输出文件
该 /OUT 选项将替代链接器创建的程序的默认名称和位置。
附加库目录
允许用户替代环境的库路径。 (/LIBPATH:folder)
链接库依赖项
指定是否链接 .lib 由依赖项目生成的文件。 通常,你想要在文件中链接 .lib ,但某些 DLL 可能并非如此。
还可以通过提供文件名和相对路径(例如)…\MyLibProject\MyObjFile.obj来指定.obj文件。 例如,如果文件的源代码.obj具有#include预编译标头,则pch.obj该文件位于同一文件夹中MyObjFile.obj。 pch.h 还必须添加 pch.obj 为附加依赖项。
使用库依赖项输入
指定在项目依赖项的库输出中进行链接时,是否使用对文档管理程序工具的输入,而不使用库文件本身。 在大型项目中,当依赖项目生成 .lib 文件时,将禁用增量链接。 如果存在许多生成 .lib 文件的依赖项目,则生成应用程序可能需要很长时间。 当此属性设置为 “是”时,项目系统会链接 .obj 依赖项目生成的文件的文件中 .lib ,从而启用增量链接。
有关如何访问 常规 链接器属性页的信息,请参阅 设置编译器和生成属性。
“输入”属性页
附加依赖项
指定要添加到链接命令行的额外依赖项项,例如 kernel32.lib。
结合下一篇静态库和DLL使用更好理解。
“配置属性”>“C/C++”>“常规”>“附加包含目录”:输入静态库和动态库的头文件路径
“配置属性”>“链接器”>“输入”>“附加依赖项”:输入动态库的lib名字
“配置属性”>“链接器”>“常规”>“附加库目录":输入动态库lib的路径
其他博客说明:
“配置属性”>VC++目录>包含目录:寻找#include
“配置属性”>VC++目录>库目录:寻找.lib文件的搜索目录
C/C++>常规->附加包含目录:寻找#include
包含目录和附加包含目录(库目录和附加库目录)的区别:
包含目录/库目录:修改了系统的include宏的值,是全局的;
附加包含目录/附加库目录:用于当前项目,对其他项目没有影响。
当需要对某工程添加这些目录时,通常情况下,都是在附加包含目录和附加库目录中添加的,官方DLL和静态库教程中使用的也是附加包含目录和附加库目录。