我使用QtCreator构建了一个项目。 一个myapp和一个staticlib mylib。 两者都在SUBDIRS模板项目中处理。
TEMPLATE = subdirs
SUBDIRS = \
mylib \
myapp
CONFIG += ordered
CONFIG += qt
myapp.depends = mylib
myapp
也与mylib2
相关联,# Paths to PGA libs and contrib
INCLUDEPATH += ./include
INCLUDEPATH += $$PWD/../mylib2/include
...
unix {
LIBS += "-L$$PWD/../mylib2/lib/" -lmylib2$${DBG} # DBG=d if debug mode
...
}
是一个在Qt框架之外单独构建的静态库。
所以,在myapp.pro的某个地方我已经
了mylib2
这样,一切正常。我很高兴。
但为了让它正常运行,我需要自己确保在构建myapp
时已经构建了make -C /path/to/mylib2 -f mylib2.mak
。
我希望实现的是在需要构建时调用makefile oy mylib2。即od
我需要在.pro文件中添加什么? 它与自定义目标有关吗? 但是如何使用qmake目标自动构建自定义目标?
Ž。
答案 0 :(得分:2)
也许我误解了它,但myapp依赖于mylib,但是你首先要构建myapp。你强迫Qt建造它有序,但你有第一个地方的myapp。
首先尝试构建mylib。
CONFIG += ordered
SUBDIRS = \
mylib \ # must be first
myapp
编辑:我正在我的项目中编写libraw,就像这样
这可以在libraw.pri之类的单独文件中,您可以将其添加到app项目。
评论:此解决方案期待您无法使用的库。它不会在mylib2文件夹中的任何文件更改时重建。它将建立在qmake运行之上。不是在构建应用项目或mylib时。
# Build libraw
!exists( $$librawdir/bin/libraw.dll ) {
system( cd $$librawdir && vcvarsall.bat amd64 && nmake Makefile.msvc )
}
所以你的版本看起来像: 文件名mylib2.pri
!exist ( /path/to/mylib2/bin/mylib2.dll ) {
system ( make -C /path/to/mylib2 -f mylib2.mak )
}
然后在您的应用程序专业文件中,您应该添加此文件,如
include(mylib2.pri)
或者你可以在myapp项目之前运行的mylib项目中添加这样的QMAKE_POST_TARGET。
QMAKE_POST_LINK += make -C /path/to/mylib2 -f mylib2.mak &
每次构建mylib目标时都应该运行make。