Visual Studio C++:如何将AdditionalIncludeDirectories设为外部项目相对路径?
如何在Visual Studio中配置相对于外部项目目录的引用路径
当然可以!这种复用共享库的场景太常见了,完全不用硬编码路径折腾,下面给你几个实用的方案,只要库和主项目的相对位置不变,不管整个目录怎么移动,配置都不用改:
方案一:自定义专属宏(最直观的方式)
你可以自己创建类似$(MyExternalProjectDir)的自定义宏,步骤很简单:
- 右键你的主项目 → 「属性」打开属性页
- 转到「C/C++ → 常规」,找到「附加包含目录」,点击右侧的编辑按钮(三个点)
- 在弹出的编辑窗口里,点击右上角的「宏」按钮(带箭头的小图标)
- 再点击「编辑宏」,然后点「新建」:
- 宏名填你想要的,比如
ExternalLibDir - 宏的值填相对于当前项目/解决方案的路径,比如如果外部库和你的主解决方案是同级目录,就写
$(SolutionDir)..\MySharedLibrary\(注意路径末尾要加斜杠,确保能正确识别子目录)
- 宏名填你想要的,比如
- 保存后,你就可以在「附加包含目录」里直接用
$(ExternalLibDir)Include\这种方式引用库的头文件了
方案二:用现有宏组合相对路径(无需额外配置)
如果不想自定义宏,直接用Visual Studio自带的宏组合出相对路径就行:
- 比如你的外部库在主解决方案的上一级目录:
$(SolutionDir)..\MySharedLibrary\Include\ - 如果外部库在主项目目录的父目录下:
$(ProjectDir)..\..\MySharedLibrary\Include\ - 这里的
..\表示上一级目录,$(SolutionDir)是当前解决方案的根目录,$(ProjectDir)是当前项目的根目录,根据你的实际目录结构组合就行
方案三:用解决方案级属性表(多项目复用更高效)
如果你的解决方案里有多个项目都需要引用这个外部库,推荐用属性表统一管理:
- 右键解决方案 → 「添加」→ 「新建项」,选择「属性表(.props)」
- 打开这个属性表,配置「附加包含目录」为上面提到的相对路径或自定义宏
- 然后每个需要引用库的项目,右键→「属性」→「通用属性」→「属性表」,点击「添加」把这个.props文件加进去
- 以后要修改路径,只需要改一次属性表,所有关联项目都会自动更新
另外提一句:如果你的外部库是作为项目引用添加的(右键项目→「添加」→「引用」→选择外部解决方案的项目),Visual Studio其实会自动处理包含路径,不用手动配置「附加包含目录」。但如果是直接引用编译好的库文件,那上面的方法就很有用了。
内容的提问来源于stack exchange,提问作者Derek




