qmake:警告:没有规则可以使目标停止

问题描述

我遇到了很多类似的帖子,但没有一个我有帮助。

我有一个包含应用程序和测试的项目。应用程序和测试都依赖于一个公共库(它是应用程序的子模块)。这是我的项目结构。

|
|_ _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,其内容是:

强烈建议您仅在当前项目的父目录或其子目录中指定路径。