假设你的C项目有一个复杂的源代码树,有很多目录和文件。scons构建支持多个目标(i386、sparc、powerpc)和多个变体(debug、release)。在根目录下有一个'sconstruct'文件(引用了各种'sconscripts'),通过使用指定目标和变体的参数来调用,可以为所有这些内容提供正确的操作,例如'scons target=i386 variant=release'。
有没有简单的方法确定每个构建将使用哪些源文件(*.c和*.h)(它们都略有不同)?我的理论是,Scons需要计算这个文件集以知道要编译哪些文件以及何时重新编译。它能提供这些信息吗?
我不想做的事情:
1. 记录详细的构建并进行后处理(可能无法告诉*.h文件)
2. “find . -name '*.[ch]'”也会打印出单元测试和其他垃圾文件,并且不是特定于目标的。
理想情况下,我希望执行'scons target=i386 variant=release printfileset'并查看适当的*.[ch]文件列表。然后,该列表可以作为进一步源文件修改工具(如doxygen)的输入。
有没有简单的方法确定每个构建将使用哪些源文件(*.c和*.h)(它们都略有不同)?我的理论是,Scons需要计算这个文件集以知道要编译哪些文件以及何时重新编译。它能提供这些信息吗?
我不想做的事情:
1. 记录详细的构建并进行后处理(可能无法告诉*.h文件)
2. “find . -name '*.[ch]'”也会打印出单元测试和其他垃圾文件,并且不是特定于目标的。
理想情况下,我希望执行'scons target=i386 variant=release printfileset'并查看适当的*.[ch]文件列表。然后,该列表可以作为进一步源文件修改工具(如doxygen)的输入。
scons -n --tree=all | sed -ne '/\.[ch]$/s/^[-+ |]*//p' | sort -u
- Jens