How do I build a static library and executable with Qt?

If you are utilizing resources in your static library you should import them in your application as well. Q_INIT_RESOURCE is the way of importing a resource file into the application.

Assume that you have a resources file with file name as myResources.qrc in static library. Then, you should initialize this in the app as given below:

QApplication a(argc, argv);

Q_INIT_RESOURCE(resources); //Magic is here.

MainWindow w;
w.show();
a.exec();

The .pro file might be modified as given below for the great example given by Masci:

TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp
RESOURCES += myResources.qrc

Filesystem layout:

MyProject
|_ myproject.pro
|_ core
   |_ core.cpp
   |_ core.h
   |_ core.pro
|_ app
   |_ main.cpp
   |_ app.pro

myproject.pro:

TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = core \
          app
app.depends = core

core.pro:

TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp

app.pro:

TEMPLATE = app
SOURCES = main.cpp
LIBS += -L../core -lcore
TARGET = ../app-exe # move executable one dire up

Tags:

C++

Qt

Qmake