一、包含目录与附加包含目录
在 Visual Studio 中,“配置属性” -> “C/C++” -> “常规” -> “附加包含目录”与“配置属性” -> “VC++ 目录” -> “包含目录”存在以下一些区别:
作用范围方面
-
“附加包含目录”:
它的作用范围更具针对性,是针对当前具体的项目来设置头文件的搜索路径。如果一个解决方案下有多个项目,在某个项目里设置的“附加包含目录”,仅对该项目生效,不同项目可以有各自独立的“附加包含目录”配置,方便进行差异化的头文件路径管理,根据每个项目自身的需求来添加特定的头文件查找位置。 -
“VC++ 目录” -> “包含目录”:
其作用范围相对更广泛,它可以影响整个 Visual Studio 解决方案(Solution)中的所有项目(如果没有被项目特定的配置覆盖的话)。通常可以在这里设置一些通用的、整个解决方案内多个项目都可能会用到的头文件所在目录,作为一种全局性质的包含目录配置。
优先级方面
-
“附加包含目录”:
当编译器查找头文件时,对于某个项目而言,会优先查找该项目所设置的“附加包含目录”中指定的路径。也就是说,它的优先级高于“VC++ 目录” -> “包含目录”。如果在“附加包含目录”里已经能找到对应的头文件了,就不会再去“VC++ 目录” -> “包含目录”所指定的路径中查找了。 -
“VC++ 目录” -> “包含目录”:
只有当在项目的“附加包含目录”里没有找到所需头文件时,编译器才会接着去“VC++ 目录” -> “包含目录”所设定的路径中继续搜索头文件,相当于作为一种补充的头文件查找路径来源。
项目移植与配置共享方面
-
“附加包含目录”:
项目进行移植或者分享给其他开发者时,由于其配置是绑定在具体项目内的,相应的“附加包含目录”配置也会一同被带走,保证在新环境下该项目依然能按照原有的头文件搜索设定来进行编译,不过其他项目不会受其影响。 -
“VC++ 目录” -> “包含目录”:
它更多是从整个解决方案层面去考虑通用性的配置,在不同开发者之间共享整个解决方案时,可能因为大家本地环境差异等原因,这部分通用的包含目录设置不一定能完全适配所有人的情况,需要根据实际情况进一步调整,而且其更改可能影响到解决方案内多个项目。
总体而言,二者都服务于让编译器能正确查找到头文件的目的,但在使用时要根据具体是针对单个项目的独特需求,还是整个解决方案的通用需求等情况来合理选择使用哪种方式进行包含目录的配置。
二、库目录与附加库目录
在 Visual Studio 里,“配置属性” -> “VC++ 目录” -> “库目录”和“配置属性” -> “链接器” -> “常规” -> “附加库目录”存在功能上的相似性,但也有一些明显的区别,以下为你详细阐述:
作用范围
- “VC++ 目录” -> “库目录”:此设置的作用范围更广,属于全局性配置,会对整个解决方案下的所有项目生效(前提是这些项目没有单独进行覆盖设置)。你可以在这里设置通用的库文件搜索路径,让解决方案中的多个项目都能从中查找所需的库文件。
- “链接器” -> “常规” -> “附加库目录”:这是针对单个项目的配置,只会影响当前所设置的项目。不同项目可以有各自独立的“附加库目录”,以此满足各项目不同的库文件查找需求。
优先级
- “VC++ 目录” -> “库目录”:它的优先级相对较低。当链接器搜索库文件时,如果在“附加库目录”中能找到所需的库文件,就不会再去“VC++ 目录” -> “库目录”里查找。
- “链接器” -> “常规” -> “附加库目录”:优先级较高,链接器会优先在“附加库目录”中搜索库文件。
配置灵活性
- “VC++ 目录” -> “库目录”:适合设置一些常用的、多个项目都会用到的库文件路径,避免在每个项目中重复设置相同的库目录,提高配置效率。不过,当不同项目需要使用不同版本或者不同位置的库文件时,这种全局配置就不太灵活。
- “链接器” -> “常规” -> “附加库目录”:配置更加灵活,你可以针对每个项目的具体需求,精确地指定该项目所需库文件的搜索路径。即使是同一个解决方案下的不同项目,也能根据各自的依赖情况进行个性化设置。
项目移植和共享
- “VC++ 目录” -> “库目录”:在项目移植或者共享给其他开发者时,由于它是全局性的设置,可能会因为不同开发者的环境差异(如库文件安装位置不同)而导致配置失效,需要重新调整。
- “链接器” -> “常规” -> “附加库目录”:项目移植时,其配置会随着项目一起迁移,只要库文件的相对路径不变,就可以在新环境中正常使用,减少了因环境差异带来的配置问题。
综上所述,“VC++ 目录” -> “库目录”更适合设置通用的、全局性的库文件搜索路径,而“链接器” -> “常规” -> “附加库目录”则更适合针对单个项目进行个性化的库文件路径配置。
总结
来自豆包的总结