在Linux上构建Qt共享库

Building Qt Shared library on Linux

本文关键字:共享 Qt 构建 Linux      更新时间:2023-10-16

我已经按照以下链接中的说明进行操作(以及此处的一些线程)http://qt-project.org/doc/qt-4.8/sharedlibrary.html

我正在成功构建一个项目,但我只看到编译后的常用对象和最终二进制文件。 没有什么看起来像图书馆的东西。

想法?

MyWidget_global.h

#ifndef MY_WIDGET_GLOBAL_H
#define MY_WIDGET_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(MY_WIDGET_LIBRARY)
#  define MY_WIDGET_EXPORT Q_DECL_EXPORT
#else
#  define MY_WIDGET_IMPORT Q_DECL_IMPORT
#endif
#endif

项目文件

DEFINES += MY_WIDGET_LIBRARY
# Input
HEADERS += MyWidget_global.h 
            MyWidget.h
# Input
SOURCES += main.cpp 
            MyWidget.cpp

最后是实际类的标头

#ifndef MY_WIDGET_H
#define MY_WIDGET_H
#include "MyWidget_global.h"
class MY_WIDGET_EXPORT MyWidget
{
public:
    MyWidget();
    // Snip
};
#endif

Qt附带了一系列预定义的项目模板。直接来自此处的文档:

变量用于定义将生成的项目类型。如果未在项目文件中声明qmake 将假定应构建应用程序,并将为此目的生成适当的 Makefile(或等效文件)。

因此,在您的情况下,QMake 假定应用程序是要构建的。添加正确的模板可以解决问题,即

TEMPLATE = lib

是解决方案。实际上,lib是为库创建输出生成文件的正确模板。

有关库的正确创建及其添加到项目中的信息,请参阅此处。