首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >“没有规则可以成为目标.”带有无文档文件(Glob)函数的错误

“没有规则可以成为目标.”带有无文档文件(Glob)函数的错误
EN

Stack Overflow用户
提问于 2012-02-27 11:11:29
回答 1查看 5K关注 0票数 3

我有一个项目,其中包括我的所有.h和.cpp文件。此项目构建我的应用程序。另一个项目中有我所有的单元测试,它需要与第一个项目相同的.h和.cpp文件。因此,每次我向第一个项目添加一个新文件时,我也必须将其添加到第二个项目中,这就是为什么我试图自动执行该步骤的原因。

为此,我尝试使用qmake的文件(Glob)函数,它基本上如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
HEADERS += \
    someotherstuff.h \
    files(../Core/DriveProgramInterface/*.h) \
    files(../Core/DriveProgramWizard/*.h)

SOURCES += \
    someotherstuff.cpp \
    files(../Core/*.cpp) \
    files(../Core/DriveProgramInterface/*.cpp) \
    files(../Core/DriveProgramWizard/*.cpp)

因此,虽然它与头很好地工作,但它根本不与源一起工作。当我试图编译时,我会得到以下错误:

/.o”不需要设置目标文件(./Core/DriveProgramWizard/..cpp)。停止播放

所以我看了看我的MakeFile,我发现了这个:

代码语言:javascript
代码运行次数:0
运行
复制
  SOURCES       = \
        someotherstuff.cpp \
        files(..\Core\*.cpp) \
        files(..\Core\DriveProgramInterface\*.cpp) \
        files(..\Core\DriveProgramWizard\*.cpp) \

  OBJECTS       = \
        someotherstuff.cpp \
        debug/*.o \
        debug/*.o \
        debug/*.o \

所以,我想,也许问题是,这个glob不是在MakeFile中解决的,而是试图生成*.o文件。我真的一点也不确定,如果这是正确的,所以如果有其他的原因,这不起作用,欢迎指点我。

此外,如果您有任何建议,我可以如何使这项工作(与文件()功能,或没有,我不在乎),我将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 14:00:06

在某些情况下,只添加:SOURCES += ../OtherDir/*.cpp不工作,运行生成的Makefile会抱怨:

代码语言:javascript
代码运行次数:0
运行
复制
No rule to make target '/../OtherDir/*.cpp', needed by 'release/*.o' [or 'debug/*.o']

在这种情况下,解决方案是将$$qoute($$PWD/...)封装在有通配符*的路径上。

代码语言:javascript
代码运行次数:0
运行
复制
SOURCES += $$quote($$PWD/../OtherDir/*.cpp)
HEADERS += $$quote($$PWD/../OtherDir/*.h)

这样就可以创建一个工作的Makefile,并且构建是成功的。

我认为其中一种情况是将*.cpp/*.h添加到子项目中,该子项目嵌套在超级项目中(即在其项目.pro文件中使用TEMPLATE=subdir的项目)。

这也可能有帮助,提到我在Windows/MinGW32平台上工作,这个问题可能与这个平台有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9464003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档