Visual Studio VC++目录包含路径:绝对路径默认原因及相对路径设置问询
关于Visual Studio包含目录路径的两个问题解答
1. 为什么用浏览按钮添加目录时默认是绝对路径?
这其实是Visual Studio的设计取舍——当你通过“...”按钮选择目录时,它会直接抓取系统提供的绝对路径,核心目的是保证当前开发环境下路径的准确性。毕竟不同开发者的机器环境、项目结构可能差异很大,绝对路径能避免因相对路径基准不明确导致的编译错误。但这种设计确实忽略了项目迁移的便利性,这也是很多开发者吐槽的点。
2. 如何正确设置相对路径?
你之前用\include无效的原因很简单:在Windows路径里,单独的\代表根目录(比如C:\),VS会去系统根目录找include文件夹,自然会出现头文件缺失的情况。正确的相对路径设置要基于项目文件(.vcxproj)所在的目录,这里给你两种可靠的方式:
手动输入相对路径:
- 如果
include目录和你的项目文件在同一个文件夹下,直接写./include(./代表当前目录,可省略,直接写include也可以); - 如果
include在项目目录的上级文件夹,写../include(../代表上级目录); - 多层目录的话以此类推,比如
../../third-party/include。
- 如果
使用VS内置宏(更推荐):
Visual Studio提供了很多动态路径宏,能自动适配项目位置,比如$(ProjectDir)代表项目文件所在的目录。你可以直接写$(ProjectDir)include或者$(ProjectDir)../include,这样就算项目迁移到其他路径,宏会自动解析成正确的路径,完全不用担心路径失效的问题。
注意:尽量不要用浏览按钮添加相对路径(它会自动转成绝对路径),直接手动输入路径或者宏即可,输入完成后点击“应用”,再尝试编译验证是否解决头文件缺失问题。
内容的提问来源于stack exchange,提问作者tmighty




