использование граблей со структурой каталогов проекта - PullRequest
0 голосов
/ 08 июля 2010

Я искал Rake для сценария сборки в нашей системе CI (проекты, построенные на C ++).Я играл с простым приложением «Привет мир», чтобы посмотреть, на что способен рейк.Все было хорошо, пока я не решил поместить файлы .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 Ответ

1 голос
/ 10 июля 2010

эта строка: ALL_FILES = [C_FILES] + HDR_FILES должно быть ALL_FILES = C_FILES << HDR_FILES

FileList - это просто необычный массив, который нам предоставляет rake, но это просто массив под капотом, поэтому мы можем использовать все стандартные операторы массива.

оператор << добавит все элементы в массиве HDR_FILES в конец массива C_FILES.

с помощью оператора + добавит массив HDR_FILES как отдельный элемент в конец массива C_FILES, создав массив массивов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...