如何在Visual Studio中查看%(AdditionalLibraryDirectories)的值及CMake相关疑问
CMake与VS项目链接配置相关问题解答
背景
按照微软教程创建了示例DLL库,随后用CMake创建示例项目,通过target_link_libraries观察CMake的自动配置情况:
附加包含目录已正确设置为本地绝对路径,用于查找头文件附加依赖项配置为相对路径的.lib文件,而非绝对路径附加库目录仅设置为%(AdditionalLibraryDirectories),和微软手动配置的方式(依赖项写文件名,库目录写路径)不一致
针对以下疑问进行解答:
1. 如何在Visual Studio中查看%(AdditionalLibraryDirectories)的值?
- 打开项目属性页,进入链接器 -> 常规,点击
附加库目录右侧的下拉箭头选择「编辑」 - 在编辑窗口右下角点击「宏」按钮,在宏列表中找到
AdditionalLibraryDirectories,即可查看其展开后的完整路径集合 - 另一种方式:在VS的输出窗口中,将日志级别切换为「详细」,构建项目时,日志会输出链接器实际使用的所有库搜索路径,其中包含该宏展开后的内容
2. CMake是否在此处使用了%(AdditionalLibraryDirectories)变量的值?
是的。CMake生成VS项目时,会依赖这个VS内置宏来覆盖系统默认的库搜索路径(比如Windows SDK库目录、VS工具集自带的库路径等)。同时,当通过target_link_libraries链接目标库时,若CMake能定位到库文件的具体路径,会直接将相对/绝对路径写入附加依赖项,而非通过配置附加库目录来间接查找——这就是你看到依赖项是相对路径的原因,CMake相当于直接给链接器指定了库文件的位置,无需额外配置搜索目录。
3. 附加依赖项是否既接受单个文件名,也接受文件路径?
完全支持两种写法:
- 若只写文件名(如
MathLibrary.lib),链接器会遍历附加库目录和%(AdditionalLibraryDirectories)包含的所有路径,查找匹配的文件 - 若写相对或绝对路径(如
../MathLibrary/Debug/MathLibrary.lib),链接器会直接使用该路径指向的文件,无需再搜索目录
CMake正是利用这一特性,直接将库的路径写入依赖项,简化了项目配置流程
内容的提问来源于stack exchange,提问作者memelord23
相关产品推荐
相关产品推荐

