有一个包含SomeLib.pro文件:如何在qt中为qmake指定库文件依赖关系?
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
然后在依赖SomeApp.pro:
..
debug:LIBS += -lSomeLib_debug
..
我怎么能强迫SomeApp建立,如果我在QMAKE感动SomeLib?
有一个包含SomeLib.pro文件:如何在qt中为qmake指定库文件依赖关系?
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
然后在依赖SomeApp.pro:
..
debug:LIBS += -lSomeLib_debug
..
我怎么能强迫SomeApp建立,如果我在QMAKE感动SomeLib?
这是丑陋的,因为你需要给出确切的库文件名,但这应该工作:
TARGETDEPS + = libfoo.a
太棒了!正是我需要的! – 2009-04-24 00:50:36
当然,这是不可能的,你是在谈论使用qmake做反向依赖查找?所以你想在库A改变之后建立应用B(以及任何其他依赖库A的应用)?
这有点像说如果vbrun300.dll更新重新编译所有的Visual Basic应用程序?
qmake
不提供此功能。
相反,把你的应用程序和lib子目录,然后在看起来像这样它们的父目录中创建一个Makefile:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
然后总是从这个目录中运行make
。
我正在使用qtcreator。因此,我希望在.pro文件中提供解决方案。 – 2009-04-23 13:32:11
在回答查希尔的评论,这或许值得指出的是,说明这如果使用DLL,qmake文件中的依赖关系是不必要的,但如果您的exe依赖于静态库,那么必需。
我用:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
它的工作原理,但笨拙的,因为它是必要指定完整路径库,这是每一个操作系统/编译器不同。
如果您在包含该库的项目的上下文菜单中单击“添加库...”,QT Creator将执行该工作。
这些变量自动为您配置:
参见http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
我利用qtcreator的。因此,我希望在.pro文件中提供解决方案。 – 2009-04-23 13:17:57