假设您有一个C项目的复杂源代码树,许多目录包含大量文件。 scons构建支持多个目标(i386,sparc,powerpc)和多个变体(调试,发布)。当使用指定目标和变量的参数调用时,根目录中有一个sconstruct
(引用各种sconscripts
)为所有这些做正确的事情。 scons target=i386 variant=release
。
是否有一种简单的方法可以确定每个构建将使用哪些源文件(* .c和* .h)(它们都略有不同)?我的理论是,scons需要计算这个文件集,以便知道要编译哪些文件以及何时重新编译。它可以提供这些信息吗?
我做的不想要做的事情:
find . -name '*.[ch]'
还会打印不需要的文件以进行单元测试和其他瑕疵,并且不是特定于目标的理想情况下,我想scons target=i386 variant=release printfileset
并查看*。[ch]文件的正确列表。然后,此列表可用作进一步源文件管理工具(如doxygen)的输入。
答案 0 :(得分:3)
有几个问题在这里被挤压在一起:
当你把所有这些放在一起时,你会得到类似的东西:
scons target=i386 variant=release printfileset -n --tree=all | egrep -i '^ .*\.(c|h|cpp|cxx|hpp|inl)$'