2010-07-08 66 views
0

我一直在尋找Rake構建CI系統中的腳本(使用C++構建的項目)。我一直在玩一個簡單的「hello world」應用程序來了解哪些耙子能夠做到。一切都很好,直到我決定將.h文件放入包含文件夾並將.cpp文件放入src文件夾中。 Rake能夠找到.cpp文件,但不能找到包含頭文件。文件結構是這樣的:使用具有項目目錄結構的rake

src/main.cpp 
src/greet.cpp 
include/greet.h 

rake script was as follows: 


require 'rake/clean' 
require 'rake/loaders/makefile' 

APPLICATION = 'hello.exe' 
C_FILES = FileList['src/*.cpp'] 
HDR_FILES = FileList['include/*.h'] 
ALL_FILES = [C_FILES] + HDR_FILES 
O_FILES = C_FILES.sub(/\.cpp$/, '.o') 

file '.depend.mf' do 
    sh "makedepend -f- -- -- #{ALL_FILES} > .depend.mf" 
end 

import ".depend.mf" 

file APPLICATION => O_FILES do |t| 
    sh "gcC#{O_FILES} -o #{t.name}" 
end 

rule ".o" => [".cpp"] do |t| 
    sh "gcc -c -o #{t.name} #{t.source}" 
end 

C_FILES.each do |src| 
    file src.ext(".o") => src 
end 

CLEAN.include("**/*.o") 
CLEAN.include(APPLICATION) 
CLEAN.include(".depend.mf") 

task :default => APPLICATION 

任何幫助將不勝感激。

回答

1

這一行:ALL_FILES = [C_FILES] + HDR_FILES應該ALL_FILES = C_FILES << HDR_FILES

一個文件清單只是一個花哨的陣列瑞克爲我們提供了,但它只是引擎蓋下方的數組,所以我們可以使用所有的標準陣列運營商就可以了。

<<運算符會將HDR_FILES數組中的所有項追加到C_FILES數組的末尾。

使用+操作者將添加HDR_FILES陣列作爲單個元件到C_FILES數組的末尾,創建陣列

的陣列