使用rake与项目目录结构

时间:2010-07-08 15:48:25

标签: c++ rake

我一直在研究Rake中的CI系统中的构建脚本(使用C ++构建的项目)。我一直在玩一个简单的“hello world”应用程序,看看rake能做什么。一切顺利,直到我决定将.h文件放入include文件夹,将.cpp文件放入src文件夹。 Rake能够找到.cpp文件,但不能找到包含头文件。文件结构如下:

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 个答案:

答案 0 :(得分:1)

这一行:ALL_FILES = [C_FILES] + HDR_FILES应为ALL_FILES = C_FILES << HDR_FILES

一个FileList只是rake为我们提供的一个奇特的数组,但它只是一个阵列,所以我们可以使用它上面的所有标准数组运算符。

<<运算符会将HDR_FILES数组中的所有项追加到C_FILES数组的末尾。

使用 +运算符将HDR_FILES数组作为单个元素添加到C_FILES数组的末尾,从而创建数组数组