2014-11-28 2 views
0

Я следовал инструкциям в ссылке ниже (и некоторые темы здесь) http://qt-project.org/doc/qt-4.8/sharedlibrary.htmlBuilding Qt Общая библиотека на Linux

Я успешно строит проект, но я вижу только обычные объекты и окончательный двоичный после сбор. Ничего похожего на библиотеку.

Идеи?

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 
+0

У вас есть 'TEMPLATE = lib' в вашем' .pro' файле? – BaCaRoZzo

+0

Я определенно не знаю. Я дома с работы на выходные, но попробую это в первую очередь в понедельник. Благодарю. :) –

+1

Вот и все. Благодарю. Не стесняйтесь предлагать это как ответ, и я его проголосую. –

ответ

1

Qt поставляется с набором предустановленных шаблонов проектов. Непосредственно из документации here:

Переменная TEMPLATE используется для определения типа проекта, который будет построен. Если не указан в файле проекта, qmake предполагает, что приложение должно быть построено и будет генерировать соответствующий Makefile (или эквивалентный файл) для этой цели.

Следовательно, в вашем случае QMake предполагает, что приложение предназначено для сборки. Добавление правильного шаблона решает проблему, то есть

TEMPLATE = lib 

является решением. Действительно, lib - это правильный шаблон для создания выходного файла make-файла для библиотеки.

См. here для правильного создания библиотеки и ее добавления в проект.

+1

Спасибо. Я просмотрел эту документацию, но пропустил это. Также стоит отметить, когда мне захотелось связать статическую библиотеку со стороны Windows, это должно было быть TEMPLATE = staticlib (который строит библиотеки DLL и .A). –

Смежные вопросы