在Linux上构建Qt共享库

时间:2014-11-28 20:54:03

标签: c++ linux qt shared-libraries

我已按照以下链接中的说明操作(此处有一些主题) 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

1 个答案:

答案 0 :(得分:1)

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

  

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

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

TEMPLATE = lib

是解决方案。实际上lib是为库创建输出makefile的正确模板。

请参阅here以正确创建库及其添加到项目中。