在没有标头依赖项的情况下构建自定义库
Build custom library without header dependency
我在Qt中做了一个小应用程序,用于发送和接收来自/接收来自/发送到RabbitMQ代理的消息。
我创建了一个包含 RabbitMQ 发布者和消费者的库,而 RabbitMQ 发布者和消费者又在这里使用 AMQP 库。现在每次我需要在应用程序中使用此库时,我都需要复制两个 .lib 文件(qamqp、RabbitMQLib),以及大约 10 个头文件,然后将它们添加到我的 .pro 文件中(通过 LIBS
和 INCLUDEPATH
)。
我在 C# 中做了一个类似的项目,但在那里我只需要两个 .dll,仅此而已。
我的问题是:我怎样才能用Qt做同样的事情?只需一两个 .lib 文件,这些文件将包含在需要它们的应用程序中,仅此而已,不需要 10 个额外的头文件。
你完全可以做到这一点。你实际上并不需要这些标头(使用它们只是有用的) - 你真正需要的是声明你实际使用的所有对象(类型、函数、变量)。所以,如果你有很多头,但只使用一个函数,你所需要的只是在实际使用它之前添加这个函数声明(可能是添加类似 __declspec(dllimport)
的东西,或者,如果使用 Qt - Q_DECL_IMPORT
)。
但是,如果您面临的唯一问题是将所有这些文件添加到您的 pro-file,那么更好的解决方案是编写一个 pri-file,如下所示:
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)
相关文章:
- 可以在没有构建代码的情况下转到定义吗?
- 如何在没有任何依赖库的情况下在Visual Studio中构建dll?
- 在没有root权限的情况下安装NTL,并在生成文件中修改其构建路径
- 通过CMake在没有Qt Creator的情况下构建Qt5 Quick项目
- 如何使用OpenCV从已知的3D点云(在没有I的情况下构建)估计新图像I的相机姿态矩阵
- 如何在不使用tensorflow的情况下构建tfsensor并将其提供给我的docker服务器
- 我如何在不启用例外的情况下构建Boost 1.70.0
- VS Code - 如何在不再次构建的情况下运行未更改的 c++ 文件
- 有没有一种方法可以在不使用std ::移动的情况下初始化类构建类的类
- 无法在不使用RTTI构建LLVM的情况下链接LLVM编译器教程程序
- 在不复制的情况下构建范围内的向量
- 如何在断言同时打开和关闭的情况下构建库
- 大多数为 Qt 5.3.2 编译的二进制文件都是在没有调试信息的情况下构建的
- 在启用 SSL 的情况下构建 libircclient 时对 'DLopen' 的未定义引用
- 需要在没有预定义缓冲区大小的情况下C++构建字符串
- 如何在不使用iostreams的情况下构建Google protobuf
- 在没有标头依赖项的情况下构建自定义库
- Visual Studios 在没有 main() 的情况下构建和调试.cpp文件
- 在没有 Visual Studio 的情况下构建 Visual Studio 6 项目
- visual在没有运行时的情况下构建windows c++库