有一个 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更新?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top