有一个 SomeLib.pro 文件,其中包含:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
然后在依赖的 SomeApp.pro 中:
..
debug:LIBS += -lSomeLib_debug
..
如果我在 qmake 中触摸 SomeLib,如何强制构建 SomeApp?
有一个 SomeLib.pro 文件,其中包含:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
然后在依赖的 SomeApp.pro 中:
..
debug:LIBS += -lSomeLib_debug
..
如果我在 qmake 中触摸 SomeLib,如何强制构建 SomeApp?
这很难看,因为您需要提供确切的库文件名,但这应该可以:
TARGETDEPS += libfoo.a
如果您在应包含该库的项目的上下文菜单中单击“添加库...”,QT Creator 将完成这项工作。
这些变量会自动为您配置:
另请参阅http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
在回复 Zahir 的评论时,可能值得指出的是,如果使用 DLL,则在 qmake 文件中说明这种依赖关系是不必要的,但如果您的 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 进行反向依赖查找?那么在您对库 A 进行更改后,您想要它构建应用程序 B(以及任何其他依赖于库 A 的应用程序)?
这有点像说如果更新了 vbrun300.dll,则重新编译所有 Visual Basic 应用程序?