构建没有标头依赖的自定义库

时间:2015-06-19 06:14:41

标签: c++ qt

我在Qt中创建了一个小应用程序,用于向/从RabbitMQ代理发送和接收消息。

我创建了一个包含RabbitMQ发布者和使用者的库,后者又使用AMQP库here。 现在,每当我需要在应用程序中使用此库时,我需要复制两个.lib文件(qamqp,RabbitMQLib),以及大约10个头文件,然后将它们添加到我的.pro文件中(通过LIBSINCLUDEPATH)。

我在C#中创建了一个类似的项目,但在那里我只需要两个.dll,就是这样。

我的问题是:我怎么能用Qt做同样的事情?只需要一个或两个.lib文件,它们将包含在需要它们的应用程序中,就是这样,不需要10个额外的头文件。

1 个答案:

答案 0 :(得分:0)

你可以完全做到这一点。你实际上并不需要这些头文件(使用它们只是有用的) - 你真正需要的是声明你实际使用的所有对象(类型,函数,变量)。所以,如果你有很多标题,但是只使用一个函数,你只需要在实际使用它之前添加这个函数声明(可能是,添加__declspec(dllimport)之类的东西,或者,如果使用的话Qt - Q_DECL_IMPORT)。

但是,如果您面临的唯一问题是将所有这些文件添加到您的专业文件中,那么更好的解决方案是编写一个pri文件,如下所示:

<强> mylib.pri

INCLUDEPATH   += $$PWD/headers
DEPENDPATH    += $$PWD/headers

HEADERS += \
    $$PWD/headers/header1.h \
    ...
    $$PWD/headers/header10.h

LIBS += -L$$PWD/libs -lqamqp -lRabbitMQLib

并将其包含在您的专业档案中:

include($$PATH_TO_COMMON_LIBS/mylib/mylib.pri)