2010-07-08 7 views
0

J'ai cherché dans Rake pour le script de construction dans notre système CI (Projets construits avec C++). J'ai joué avec une simple application 'hello world' pour voir ce que rake est capable de faire. Tout allait bien jusqu'à ce que je décide de mettre les fichiers .h dans un dossier d'inclusion et les fichiers. Cpp dans le dossier src. Rake a réussi à trouver les fichiers .cpp mais pas les fichiers d'en-tête inclus. Structure du fichier comme ceci:en utilisant rake avec la structure du répertoire du projet

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 

Toute aide serait grandement appréciée.

Répondre

1

cette ligne: ALL_FILES = [C_FILES] + HDR_FILES devrait être ALL_FILES = C_FILES << HDR_FILES

une liste de fichiers est juste un tableau de fantaisie qui râteau fournit pour nous, mais il est juste un tableau sous le capot, afin que nous puissions utiliser tous les opérateurs de tableaux standards sur elle.

L'opérateur << ajoute tous les éléments du tableau HDR_FILES à la fin du tableau C_FILES.

en utilisant l'opérateur + ajoutera le tableau HDR_FILES comme un seul élément à la fin du tableau c_files, créant ainsi un tableau de tableaux

Questions connexes