如何创建匹配来自不同文件夹的文件的rake规则?
How to create a rake rule that matches files from different folders?
我需要创建一个 rake 规则,将 'src' 文件夹中的每个 C 文件编译为 'obj' 文件夹中的相应文件。在 make 中,这是通过以下方式实现的:
obj/%.o: src/%.c
我一直在尝试找出如何在 rake 中完成此操作,但找不到解决方案。这是佣金代码:
SOURCES = Rake::FileList["src/*.c"]
OBJECTS = SOURCES.ext(".o").pathmap("obj/%f")
task :binary => OBJECTS do
sh "gcc #{OBJECTS} --shared -o TARGET"
end
rule '.o' => '.c' do |task|
sh "gcc -c src/#{task.source}"
end
task :default => :binary
当此代码为运行时,抛出以下错误:
rake aborted!
Don't know how to build task 'obj/cx.o'
想通了。以下抽成代码有效:
rule '.o' => ->(t){t.pathmap("src/%f").ext(".c")} do |task|
sh "gcc -c #{task.source} -o #{task.name}"
end
我需要创建一个 rake 规则,将 'src' 文件夹中的每个 C 文件编译为 'obj' 文件夹中的相应文件。在 make 中,这是通过以下方式实现的:
obj/%.o: src/%.c
我一直在尝试找出如何在 rake 中完成此操作,但找不到解决方案。这是佣金代码:
SOURCES = Rake::FileList["src/*.c"]
OBJECTS = SOURCES.ext(".o").pathmap("obj/%f")
task :binary => OBJECTS do
sh "gcc #{OBJECTS} --shared -o TARGET"
end
rule '.o' => '.c' do |task|
sh "gcc -c src/#{task.source}"
end
task :default => :binary
当此代码为运行时,抛出以下错误:
rake aborted!
Don't know how to build task 'obj/cx.o'
想通了。以下抽成代码有效:
rule '.o' => ->(t){t.pathmap("src/%f").ext(".c")} do |task|
sh "gcc -c #{task.source} -o #{task.name}"
end