我有一个像这样的规则的 Rakefile:
rule '.so' => '.cc' do |t|
puts "@ Compiling #{t.source}"
output = t.source.ext("so")
output['stdlib'] = 'build'
sh "mkdir -p #{File.dirname(output)}"
sh "#{CXX} #{t.source} -o#{output} #{STDLIB_CFLAGS} #{STDLIB_LFLAGS}"
end
如您所见,它会从“stdlib”目录(包含源代码)到存储二进制文件的“build”目录生成许多 .so 库。
现在的问题是,由于这种“目录交换”,rake 似乎无法将 .so 文件识别为它生成的文件,导致每次运行 rake 命令时都会重新编译每个 .so 模块,即使没有任何更改。
有没有办法解决这个问题?
谢谢