首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt -在带有目录的.pro-File中使用星号(*)

Qt -在带有目录的.pro-File中使用星号(*)
EN

Stack Overflow用户
提问于 2013-05-07 09:19:27
回答 2查看 9.2K关注 0票数 10

我有一个.pro文件,如下所示:

代码语言:javascript
复制
SOURCES += myfolder/source1.cpp \
           myfolder/source2.cpp
HEADERS  += myfolder/header1.h\
            myfolder/header2.h
FORMS    += myfolder/form1.ui\
            myfolder/form2.ui

一切都运行得很好。但是,如果我尝试使用星号来包含所有文件,即:

代码语言:javascript
复制
SOURCES  += myfolder/*.cpp
HEADERS  += myfolder/*.h
FORMS    += myfolder/*.ui

qmake抛出file-not-found error:

代码语言:javascript
复制
WARNING: Failure to find: myfolder\*.cpp
[...]
:-1: error: No rule to make target `myfolder/*.cpp', needed by `release/source1.o'.  Stop.

在这两种情况下,Qt-Creator都可以找到文件。

有没有使用星号的方法?手动键入文件很烦人。

谢谢!

编辑: Qt 4.8.4,Windows 7,Qt-Creator 2.6.1。因为忘记了这个想法,它是不需要的。

[编辑:找到解决方案:http://qt-project.org/forums/viewthread/1127。无论如何,谢谢您!]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-08 19:27:53

起初,使用星号是一种糟糕的做法--尽管qmake允许这样做,但在添加新文件、重命名或删除文件时,QtCreator不能正确编辑这样的*.pro。因此,尝试使用“新建文件”或“添加现有文件”对话框添加新文件。

QMake有for循环和函数字符串(directory_path:$$files)。还可以将文件分别附加到源文件或头文件变量。

简短的示例,它将所有文件,但不是目录,添加到变量文件(不影响构建或项目树):

代码语言:javascript
复制
files = $$files($$PWD/src)
win32:files ~= s|\\\\|/|g
for(file, files):!exists($$file/*):FILES += $$file

如果你想检查文件是否包含,尝试使用*.cpp ($$file,".cpp")。

代码语言:javascript
复制
files = $$files($$PWD/src)
win32:files ~= s|\\\\|/|g
for(file, files):!exists($$file/*):contains($$file, ".cpp"):SOURCES += $$file
票数 4
EN

Stack Overflow用户

发布于 2016-12-13 20:58:50

至少在qmake 3.0中,可以使用如下内容:

代码语言:javascript
复制
SOURCES = $$files(*.cpp, true)
HEADERS = $$files(*.h, true)

true参数将导致files函数递归地查找与第一个参数给出的模式匹配的所有文件。

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

https://stackoverflow.com/questions/16409756

复制
相关文章

相似问题

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