-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrakefile
40 lines (28 loc) · 783 Bytes
/
rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# constants
COMPILER = "g++"
EXEC = "unit_test"
# Use -DPLATFORM_BIG_ENDIAN for big endian platforms
FLAGS = "-Wall -Wextra -g -O2"
OBJECTS = %w(condition_language.o unit_test.o)
HEADERS = %w(condition_language.h)
# tasks
task :build => [EXEC]
task :test => :build do
sh "./#{EXEC}"
end
task :default => :test
desc "Clean stuff"
task :clean do
files = (Dir["*.o"] + Dir["#{EXEC}"]).uniq
rm_f files unless files.empty?
end
# rules
rule '.o' => '.cpp' do |target|
sh "#{COMPILER} #{FLAGS} -c -o #{target.name} #{target.source}"
end
file EXEC => OBJECTS do
sh "#{COMPILER} #{FLAGS} #{OBJECTS.join(" ")} -o #{EXEC}"
end
# dependencies
file 'unit_test.o' => %w(unit_test.cpp) + HEADERS
file 'condition_language.o' => %w(condition_language.cpp) + %w(condition_language.h)