2013-05-07 33 views
3

我有一個.pro文件,它看起來像:Qt的 - 在的.pro-文件中使用星號(*)與目錄

SOURCES += myfolder/source1.cpp \ 
      myfolder/source2.cpp 
HEADERS += myfolder/header1.h\ 
      myfolder/header2.h 
FORMS += myfolder/form1.ui\ 
      myfolder/form2.ui 

而且一切都很正常。但是,如果我嘗試使用星號包含的所有文件,即:

SOURCES += myfolder/*.cpp 
HEADERS += myfolder/*.h 
FORMS += myfolder/*.ui 

QMAKE拋出一個文件未找到錯誤:

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

在這兩種情況下,Qt的創建者可以找到這些文件。

有沒有辦法使用星號?手動鍵入文件很煩人。

謝謝!

[編輯:Qt 4.8.4,Windows 7,Qt-Creator 2.6.1。 Sry忘記了這個想法是不需要的。]

[編輯:找到解決方案:http://qt-project.org/forums/viewthread/1127。謝謝!]

+1

Qt的哪個版本,以及您使用的是哪個操作系統? – 2013-05-07 04:21:03

回答

1

起初,使用星號是不好的做法 - 儘管qmake允許它,QtCreator無法正確地編輯這樣的* .pro在添加新的,重命名或刪除文件。因此,請嘗試使用「新文件」或「添加現有文件」對話框添加新文件。

QMake有循環和函數$$文件(directory_path:String)。也分別將文件附加到SOURCES或HEADERS變量。

簡單的例子,它增加了所有文件,而不是目錄變量文件(不影響建或項目樹):

files = $$files($$PWD/src) 
win32:files ~= s|\\\\|/|g 
for(file, files):!exists($$file/*):FILES += $$file 

如果你想檢查文件是否爲*的.cpp,嘗試使用包含($$文件,「.cpp」)。

files = $$files($$PWD/src) 
win32:files ~= s|\\\\|/|g 
for(file, files):!exists($$file/*):contains($$file, ".cpp"):SOURCES += $$file 
9

qmake 3.0,至少,它可以使用類似:

SOURCES = $$files(*.cpp, true) 
HEADERS = $$files(*.h, true) 

true參數會導致files功能遞歸找到相匹配的第一個參數給出的模式的所有文件。