问题描述
我有一个包含应用程序和测试的项目。应用程序和测试都依赖于一个公共库(它是应用程序的子模块)。这是我的项目结构。
|
|_ _Application.pro
|_ _App/app.pro
|_ _lib/lib.pro
|_ _TestSuite/
|_ _Test.pro
#Application.pro
TEMPLATE = subdirs
SUBDirs += app \
lib
#subdirs
lib.file = $${PWD}/lib/lib.pro
app.file = $${PWD}/App/app.pro
#dependecies
app.depends = lib
QMAKE_CLEAN += $${OUT_PWD}/Makefile*
#Test.pro
TEMPLATE = subdirs
SUBDirs += Test \
lib
#subdirs
lib.file = $${PWD}/../lib/lib.pro
app.file = $${PWD}/TestSuite/Test.pro
#dependecies
Test.depends = lib
QMAKE_CLEAN += $${OUT_PWD}/Makefile*
应用程序编译正常,但是当我在测试中运行make时,它会抛出没有任何规则可以使Test.pro Stop所需的目标lib.pro停止错误。
如果我在TestSuite下复制lib文件,则它可以完美运行。那么强制 subdirs 应该是当前应用程序的子目录吗?
解决方法
尽管我目前似乎无法在文档中找到它,但我至少发现了一个bug report,其中指出使用subdirs
模板的.pro文件不应使用指向上方的目录在目录结构中。您的subdirs .pro文件应该是目录树的根。
|
|_ _Application.pro
|_ _Test.pro
|_ _App/
|_ _app.pro
|_ _lib/
|_ _lib.pro
编辑:以下是相关的documentation,其内容是:
强烈建议您仅在当前项目的父目录或其子目录中指定路径。