一次创建静态和动态库

时间:2013-11-30 22:48:28

标签: c++ qt qmake

如何一次创建静态库和动态库?我使用的是qt 5.1。我想有一个.pro文件,它同时支持两种lib类型。我需要它用于Windows和Linux。我找到了类似的东西:

CONFIG += staticlib

但我怎样才能建立共享的呢?

这是我目前的例子(对于.so):

ROOT_DIR = ./..
INCLUDE_DIR = $$ROOT_DIR/include
SRC_DIR = $$ROOT_DIR/src
BIN_DIR = $$ROOT_DIR/bin
LIB_DIR = $$ROOT_DIR/lib
MAKE_DIR = .

unix {
MOC_DIR = $$ROOT_DIR/moc
OBJECTS_DIR = $$ROOT_DIR/obj
}

win32 {
MOC_DIR = $$ROOT_DIR/moc.win
OBJECTS_DIR = $$ROOT_DIR/obj.win
}

QT       -= gui

TARGET = test
TEMPLATE = lib

DESTDIR = $$BIN_DIR

DEFINES += TEST_LIBRARY

SOURCES += Test.cpp

HEADERS += Test.h\
        test_global.h

有人可以告诉我如何添加静态库吗?正如我所说,它也适用于Windows,因此,我需要正确的库。谢谢到目前为止!

2 个答案:

答案 0 :(得分:5)

还没有答案?在我找到这个解决方案之前,我一直在摸不着头脑:

CONFIG += shared_and_static build_all

这会在两个sparate目录(两个'mode')中生成两个版本的编译对象(我的相同),称为sharedstatic以及两个makefile(Makefile.Shared和{{1 }})能够制作两个目标。

通过添加Makefile.Static,两个目标都会连续生成。

希望它有所帮助。

答案 1 :(得分:0)

正如文档所述,这与CONFIG变量无关。您可以将其留空,或使用其中一个有效值。查看qmake variable reference

变量TEMPLATE是您要查找的变量,它应该具有值lib。这足以构建静态库和动态库。