我正在写一个C++项目的Rakefile。我希望它自动识别#includes
,强制重建依赖于更改的源文件的目标文件。我有一个工作解决方案,但我认为它可以更好。我正在寻找一个建议:帮助耙子依赖映射
- 改进建议我的功能
- 图书馆,宝石,或工具做的工作对我来说
- 链接冷却C++ Rakefiles,我应该看看做类似的东西
这是我到目前为止。这是一个返回给定源文件的依赖关系列表的函数。我为给定的目标文件提供源文件,并且我想要一个强制我重建我的目标文件的文件列表。
def find_deps(file)
deps = Array.new
# Find all include statements
cmd = "grep -r -h -E \"#include\" #{file}"
includes = `#{cmd}`
includes.each do |line|
dep = line[ /\.\/(\w+\/)*\w+\.(cpp|h|hpp)/ ]
unless dep.nil?
deps << dep # Add the dependency to the list
deps += find_deps(dep)
end
end
return deps
end
我要指出,我所有的包括像现在这样的权利:
#include "./Path/From/Top/Level/To/My/File.h" // For top-level files like main.cpp
#include "../../../Path/From/Top/To/My/File.h" // Otherwise
请注意,我使用双引号为我的项目和尖括号内包括外部库包括。我愿意提供其他方式的建议,使我的生活更轻松。