如何在 Visual Studio 中使用有关头文件路径的 C++ 库的依赖项

Posted

技术标签:

【中文标题】如何在 Visual Studio 中使用有关头文件路径的 C++ 库的依赖项【英文标题】:How to use dependencies of C++ libs in Visual Studio regarding the header path 【发布时间】:2008-12-02 14:41:09 【问题描述】:

我们有几个在应用程序中使用的 C++ 库,并且存在很多依赖项。


示例问题: 假设我们有一个使用 libBlibC 的应用程序 AppAlibC 使用 libD。每个库都是一个静态库项目,所有库都分组在一个解决方案中,并且依赖项提供给 Visual Studio,因此所有库和应用程序都链接在一起并以正确的顺序构建。

现在我必须将 libBlibClibD 的标头路径添加到 AppA 和路径libDlibC 作为 AdditionalIncludePath。我认为如果每个库都可以定义它的一个包含路径并使用依赖机制将这些路径添加到依赖项目的包含路径中会更好。

有这样的机制吗?

我尝试使用属性表,但这意味着依赖项必须定义两次。

【问题讨论】:

【参考方案1】:

首先,如果 AppA 仅使用 LibC,您可能会遇到设计问题,但必须知道 LibD 的标头路径,即使它不直接使用它。如果要单独使用 LibC 和 LibD,它们应该构建为独立的单元,并且 LibC 应该保护其用户免受 LibD 依赖。 当然,如果 LibC 建立在 LibD 中定义的某些对象上,那将无法正常工作,但是 AppA 是直接使用 LibD。

您的问题的实际答案: 如果您的所有库都捆绑在一个解决方案中,它们可能共享一个基本路径。 IE。 LibB 在库/LibB 中,LibC 在库/LibC 中。如果您将基本路径添加到应用程序,然后确保不是来自当前项目/文件夹的每个包含都使用限定路径,那么您不必向解决方案构建添加这么多路径。 例如,在 LibC 中,您将拥有:

// LibC File
#include "AFileFromLibC.h"
#include "LibD/AFileFromLibD.h"

//LibC Code goes here.

【讨论】:

以上是关于如何在 Visual Studio 中使用有关头文件路径的 C++ 库的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在Visual Studio中调试时,如何检查有关进程令牌的详细信息?

摆脱 Visual Studio 中缺少的 -D__STDC_CONSTANT_MACROS

如何在 Visual Studio 2017+ 中编译 Less/Sass 文件

如何在Visual Studio代码中使用FTP-Simple工作?

如何在 Visual Studio (C++) 中设置发布分析

如何在 PHP 的 Visual Studio Code 中选择包括 $ 在内的整个变量名?