题
我试图用scons的构建乳胶的文档。我特别想scons的调用生成包含一个表,是\输入{}到主文档文件的Python程序。我看过了的scons的文档,但它不是立即清楚,我什么,我需要做的。
我想实现本质上是你将与此生成的文件得到了什么:
document.pdf: table.tex
pdflatex document.tex
table.tex:
python table_generator.py
我怎样才能表达这种在scons的?
解决方案
沿着这些路线的东西应该做 -
env.Command ('document.tex', '', 'python table_generator.py')
env.PDF ('document.pdf', 'document.tex')
它宣布“document.tex”是通过调用Python脚本生成的,并且请求一个PDF文件被从这个generatd创建“document.tex”文件。
请注意,这是唯一的精神。它可能需要一些调整。特别是,我不能确定你想为“document.tex”的产生什么样的语义 - 它应该被生成的每个时间?只有当它不存在?当其他一些文件的变化? (您想添加这种依赖作为第二个参数的命令()的情况下)。
(如果需要)此外,命令的输出()可以被用作输入到PDF。为了清楚起见,我没有这样做。
其他提示
在这个简单的情况下,最简单的方法是只使用子模块
from subprocess import call
call("python table_generator.py")
call("pdflatex document.tex")
不管在你的SConstruct文件这些行被放置,它们将之前的任何编译的发生,并通过使用SCons对链接进行。
缺点是,这些命令将在每次运行SCons的,而不是只有当文件改变时,这是你的榜样Makefile中会发生什么被执行。因此,如果这些命令需要很长的时间来运行,这将不是一个好的解决方案。
如果你真的只需要运行这些命令的文件时发生了变化,看看SCons的手册中的编写自己的建设者。
不隶属于 StackOverflow