如何在Qt中为qmake指定库文件依赖关系?
-
13-09-2019 - |
题
有一个 SomeLib.pro 文件,其中包含:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
然后在依赖的SomeApp.pro中:
..
debug:LIBS += -lSomeLib_debug
..
如果我在 qmake 中接触了 SomeLib,如何强制构建 SomeApp?
解决方案
这是丑陋的,因为你需要给出确切的库文件名,但这应该工作:
TARGETDEPS + = libfoo.a
其他提示
如果您在应包含该库的项目的上下文菜单中单击“添加库...”,QT Creator 将完成这项工作。
这些变量会自动为您配置:
- LIBS
- 包含路径
- 依赖路径
- PRE_TARGETDEPS
也可以看看 http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
在回答查希尔的评论,这或许值得指出的是,说明在QMAKE文件,这种依赖性,如果使用的DLL是不必要的,但必要的,如果你的EXE依赖于一个静态库。
qmake
不提供这种能力。
相反,把你的子目录中的应用程序和lib,然后在看起来像这样它们的父目录中创建一个Makefile:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
然后总是从这个目录中运行make
。
我使用:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
它的工作原理,但是笨拙,因为必须指定完整路径库,它是为每个操作系统/编译器不同。
当然,可以是不可能的,你说的是学会使用qmake做一个相反的依赖查找?你还是你想要的东西是它构建的应用程序B(以及任何其他应用程序依赖于库A)你已经做了更改库中的后?
这是一个有点像说重新编译所有的Visual Basic应用程序,如果VBRUN300.DLL更新?
不隶属于 StackOverflow