我试图用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的手册中的编写自己的建设者

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top