如何在Qt中为qmake指定库文件依赖?

时间:2009-04-23 12:31:01

标签: c++ qt dependencies qmake

拥有包含以下内容的SomeLib.pro文件:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

然后在依赖的SomeApp.pro中:

..
debug:LIBS += -lSomeLib_debug
..

如果我在qmake中触及SomeLib,如何强制构建SomeApp?

6 个答案:

答案 0 :(得分:16)

这很难看,因为你需要提供确切的库文件名,但这应该有效:

TARGETDEPS + = libfoo.a

答案 1 :(得分:3)

如果您在应包含库的项目的上下文菜单中单击“添加库...”,QT Creator将执行此工作。

为您自动配置这些变量:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

另见http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

答案 2 :(得分:2)

在回复Zahir的评论时,或许值得指出的是,如果使用DLL,则说明在qmake文件中这种依赖是不必要的,但如果你的exe依赖于静态库,则必需

答案 3 :(得分:1)

qmake不提供此功能。

相反,将您的app和lib放在子目录中,然后在其父目录中创建一个看起来像这样的Makefile:

all: FRC
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE)

FRC:

然后始终从此目录运行make

答案 4 :(得分:1)

我用过:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a

它有效,但是很笨拙,因为必须指定库的完整路径,这对于每个操作系统/编译器都是不同的。

答案 5 :(得分:0)

肯定是不可能的,你在谈论使用qmake进行反向依赖查找?所以你想要的是在你对库A进行更改之后构建应用程序B(以及依赖于库A的任何其他应用程序)吗?

这有点像说如果更新vbrun300.dll会重新编译所有可视化基础应用程序吗?