【问题标题】:qmake : warning: No rule to make target Stopqmake:警告:没有规则使目标停止
【发布时间】:2020-11-09 15:35:05
【问题描述】:

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

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

|
|_ _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*

应用程序编译得很好,但是当我在 test 上运行 make 时,它​​会抛出 No rule to make target lib.pro required by Test.pro Stop 错误。

如果我在 TestSuite 下复制 lib 文件,那么它可以完美运行。那么 subdirs 是否必须是当前应用程序的子目录?

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    虽然目前我似乎无法在文档中找到它,但我至少找到了一个bug report,它指出使用subdirs 模板的.pro 文件不应使用在目录结构中指向上方的目录.您的 subdirs .pro 文件应该是目录树的根目录。

    |
    |_ _Application.pro
    |_ _Test.pro
    |_ _App/
            |_ _app.pro
    |_ _lib/
            |_ _lib.pro
    
    

    编辑:以下是相关的documentation 声明:

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

    【讨论】:

    • 来自文档:“强烈建议您仅指定当前项目的父目录或其子目录中的路径。”
    • 谢谢@Jens,如果你有链接,我会把它添加到我的答案中。
    • 谢谢,我看过了,但一直在掩饰它。
    • 我找到的一个解决方案是在 Test 文件夹下为这些库创建符号链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多