如何从Qt .pro项目文件

时间:2017-02-15 19:35:44

标签: qt qmake

我使用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目标自动构建自定义目标?

Ž。

1 个答案:

答案 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。