如何使用Qt构建静态库和可执行文件?

问题描述 投票:23回答:2

为了简化这种情况,我们假设有两个文件:core.cppmain.cpp

core.cpp包含程序的功能,main.cpp包含基本的main()实现。

我想要Qt(使用qmake和.pro文件)

  • 首先建立core.a然后
  • 使用它和main.cpp来建立main.exe

如何在qmake文件中进行设置?

c++ qt qmake
2个回答
32
投票

文件系统布局:

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

没有project.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

0
投票

如果您正在使用静态库中的资源,那么您也应该在应用程序中导入它们。 Q_INIT_RESOURCE是将资源文件导入应用程序的方式。

假设您在静态库中有一个文件名为myResources.qrc的资源文件。然后,您应该在应用程序中初始化它,如下所示:

QApplication a(argc, argv);

Q_INIT_RESOURCE(resources); //Magic is here.

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

对于Masci给出的优秀示例,.pro文件可能会被修改为如下所示:

TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp
RESOURCES += myResources.qrc
© www.soinside.com 2019 - 2024. All rights reserved.