Объясните как создать статическую библиотеку в qt и как её использовать

Может есть ресурс где это можно посотреть или что то в этом роде. Не могу никак найти подходящей инфы как это делать и как использовать. Мне бы пример такого типа: Так создаем, тут пишем, так используем.


Ответы (1 шт):

Автор решения: magrif

Создайте тестовый проект с MainWindow. Затем сформируйте дерево каталогов такого вида:

myapp
|_myapp.pro
  |_app
   |_app.pro
   |_main.cpp
  |_lib
    |_mainwindow.pro
    |_mainwindow.cpp
    |_mainwindow.h
    |_mainwindow.ui

Главный файл проекта myapp.pro имеет следующее содержание:

# говорим, что наш огромный проект состоит из подпроектов
TEMPLATE = subdirs
# а именно lib и app
SUBDIRS  = lib app

# явно указываем pro-файлы этих проектов
lib.file = lib/mainwindow.pro
app.file = app/app.pro
# и говорим, что app зависит от lib
app.depends = lib

Далее содержимое mainwindow.pro:

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# название файла нашей статической библиотеки
TARGET = mainwindow
# указываем, что проект не запускаемой приложение, а библиотека
TEMPLATE = lib
# какая? статическая
CONFIG += staticlib
# заметьте, тут нет main.cpp
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui

Ну и наконец app.pro:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = myappexe
# теперь это запускаемое приложение
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

# говорим, где смотреть заголовочные файлы
INCLUDEPATH += $$PWD/../lib
# и где искать символы статической библиотеки
# префикс -L - для указания пути где искать библиотеки
# префикс -l перед названием самой библиотеки
LIBS += -L$$OUT_PWD/../lib -lmainwindow

# а тут только main.cpp и всё
SOURCES += main.cpp

Домашнее задание - создать подпроект tests, где реализовать тесты для MainWindow.

→ Ссылка