如何使用变体目录和PDF builder处理中间依赖关系?

如何使用变体目录和PDF builder处理中间依赖关系?,pdf,latex,scons,Pdf,Latex,Scons,我试图用SCON构建一个LaTeX文档,其中PDF目标的一些源是其他构建者的目标。这非常有效,直到我尝试将其与变体目录相结合。看起来,一旦我将variant目录添加到SConscript调用中,所有构建的源代码就不再被正确地扫描到PDF目标的依赖关系树中 在我的最小工作示例中设置这种类型的构建是否有错误 >> scons --version SCons by Steven Knight et al.: script: v2.5.1.rel_2.5.1:3735:9dc6cee

我试图用SCON构建一个LaTeX文档,其中PDF目标的一些源是其他构建者的目标。这非常有效,直到我尝试将其与变体目录相结合。看起来,一旦我将variant目录添加到SConscript调用中,所有构建的源代码就不再被正确地扫描到PDF目标的依赖关系树中

在我的最小工作示例中设置这种类型的构建是否有错误

>> scons --version
SCons by Steven Knight et al.:
    script: v2.5.1.rel_2.5.1:3735:9dc6cee5c168[MODIFIED], 2016/11/03 14:02:02, by bdbaddog on mongodog
    engine: v2.5.1.rel_2.5.1:3735:9dc6cee5c168[MODIFIED], 2016/11/03 14:02:02, by bdbaddog on mongodog
    engine path: ['/usr/lib/scons/SCons']
Copyright (c) 2001 - 2016 The SCons Foundation

>> tree  
.
├── SConstruct
└── src
    ├── document.tex
    ├── foo.in
    └── SConscript

1 directory, 4 files

>> cat SConstruct 
# SConscript('src/SConscript')                                  # <- Works
SConscript('src/SConscript', variant_dir='build', duplicate=0)  # <- Error

>> cat src/foo.in 
Bar

>> cat src/document.tex 
\documentclass{article}
\begin{document}
\input{foo}
\end{document}

>> cat src/SConscript 
Command('foo.tex', 'foo.in', Copy('$TARGET', '$SOURCE'))
PDF('document.tex')

>> scons --tree=prune
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
cd build && pdflatex -interaction=nonstopmode -recorder document.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(/nfs/msdev/users/bellockk/Development/SConsMakoTeX/SOQ/src/document.tex
LaTeX2e <2016/03/31>
Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) (./document.aux)

! LaTeX Error: File `foo.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 
! Emergency stop.
<read *> 

l.3 \input{foo}
               ^^M
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on document.log.
pdflatex returned an error, check the log file
scons: *** [build/document.pdf] Error 1
+-.
  +-SConstruct
  +-build
  | +-src/SConscript
  | +-build/document.acn
  | | +-build/document.pdf
  | |   +-src/document.tex
  | +-build/document.acr
  | | +-[build/document.pdf]
  | +-build/document.alg
  | | +-[build/document.pdf]
  | +-build/document.aux
  | | +-[build/document.pdf]
  | +-build/document.bbl
  | | +-[build/document.pdf]
  | +-build/document.bcf
  | | +-[build/document.pdf]
  | +-build/document.blg
  | | +-[build/document.pdf]
  | +-build/document.fls
  | | +-[build/document.pdf]
  | +-build/document.glg
  | | +-[build/document.pdf]
  | +-build/document.glo
  | | +-[build/document.pdf]
  | +-build/document.gls
  | | +-[build/document.pdf]
  | +-build/document.idx
  | | +-[build/document.pdf]
  | +-build/document.ilg
  | | +-[build/document.pdf]
  | +-build/document.ind
  | | +-[build/document.pdf]
  | +-build/document.lof
  | | +-[build/document.pdf]
  | +-build/document.log
  | | +-[build/document.pdf]
  | +-build/document.lot
  | | +-[build/document.pdf]
  | +-build/document.nav
  | | +-[build/document.pdf]
  | +-build/document.nlg
  | | +-[build/document.pdf]
  | +-build/document.nlo
  | | +-[build/document.pdf]
  | +-build/document.nls
  | | +-[build/document.pdf]
  | +-build/document.out
  | | +-[build/document.pdf]
  | +-[build/document.pdf]
  | +-build/document.snm
  | | +-[build/document.pdf]
  | +-build/document.synctex.gz
  | | +-[build/document.pdf]
  | +-src/document.tex
  | +-build/document.toc
  | | +-[build/document.pdf]
  | +-src/foo.in
  | +-build/foo.tex
  |   +-src/foo.in
  +-src
    +-src/SConscript
    +-src/document.tex
    +-src/foo.in
scons: building terminated because of errors.
>scons--版本
史蒂文·奈特等人的烤饼:
脚本:v2.5.1.rel_2.5.1:3735:9dc6cee5c168[修改],2016/11/03 14:02:02,由bdbaddog在mongodog发布
引擎:v2.5.1.rel_2.5.1:3735:9dc6cee5c168[修改],2016/11/03 14:02:02,由bdbaddog在mongodog发布
引擎路径:['/usr/lib/scons/scons']
版权所有(C)2001—2016 SCONS基金会
>>树
.
├── SConstruct
└── src
├── document.tex
├── 福因
└── 讽刺
1个目录,4个文件
>>cat结构
#SConscript('src/SConscript')#cat src/foo.in
酒吧
>>cat src/document.tex
\documentclass{article}
\开始{document}
\输入{foo}
\结束{document}
>>cat src/SConscript
命令('foo.tex','foo.in',Copy('$TARGET','$SOURCE'))
PDF('document.tex')
>>烤饼——树=修剪
scons:正在读取SConscript文件。。。
scons:已完成读取SConscript文件。
斯科恩:建立目标。。。
cd build&&pdflatex-interaction=nonstopmode-recorder document.tex
这是pdfTeX,版本3.14159265-2.6-1.40.17(TeX Live 2016)(预加载格式=pdflatex)
受限\已启用写18。
进入扩展模式
(/nfs/msdev/users/bellock/Development/SConsMakoTeX/SOQ/src/document.tex
迟到的
加载3种语言的巴别塔和断字模式。
(/usr/share/texlive/texmf dist/tex/latex/base/article.cls
文件类别:第2014/09/29条v1.4h标准乳胶文件类别
(/usr/share/texlive/texmf dist/tex/latex/base/size10.clo))(/document.aux)
!LaTeX错误:找不到文件'foo.tex'。
键入X退出或继续,
或输入新名称。(默认扩展名:tex)
输入文件名:
紧急停车。
l、 3\输入{foo}
^^M
!=>发生致命错误,未生成输出PDF文件!
记录在document.log上。
pdflatex返回错误,请检查日志文件
scons:**[build/document.pdf]错误1
+-.
+-SConstruct
+-建造
|+-src/SConscript
|+-build/document.acn
||+-build/document.pdf
||+-src/document.tex
|+-build/document.acr
||+-[build/document.pdf]
|+-build/document.alg
||+-[build/document.pdf]
|+-build/document.aux
||+-[build/document.pdf]
|+-build/document.bbl
||+-[build/document.pdf]
|+-build/document.bcf
||+-[build/document.pdf]
|+-build/document.blg
||+-[build/document.pdf]
|+-build/document.fls
||+-[build/document.pdf]
|+-build/document.glg
||+-[build/document.pdf]
|+-build/document.glo
||+-[build/document.pdf]
|+-build/document.gls
||+-[build/document.pdf]
|+-build/document.idx
||+-[build/document.pdf]
|+-build/document.ilg
||+-[build/document.pdf]
|+-build/document.ind
||+-[build/document.pdf]
|+-build/document.lof
||+-[build/document.pdf]
|+-build/document.log
||+-[build/document.pdf]
|+-build/document.lot
||+-[build/document.pdf]
|+-build/document.nav
||+-[build/document.pdf]
|+-build/document.nlg
||+-[build/document.pdf]
|+-build/document.nlo
||+-[build/document.pdf]
|+-build/document.nls
||+-[build/document.pdf]
|+-build/document.out
||+-[build/document.pdf]
|+-[build/document.pdf]
|+-build/document.snm
||+-[build/document.pdf]
|+-build/document.synctex.gz
||+-[build/document.pdf]
|+-src/document.tex
|+-build/document.toc
||+-[build/document.pdf]
|+-src/foo.in
|+-build/foo.tex
|+-src/foo.in
+-src
+-src/SConscript
+-src/document.tex
+-src/foo.in
scons:由于错误而终止生成。

你能用duplicate=1试试吗?根本的问题是,LaTeX builder“cd”是的,它可以使用duplicate=1,但我真的更愿意关闭它。我必须处理PDF生成器的另一个问题,如果我将duplicate=1设置为1,它将无法运行pdflatex正确的次数来生成目录。我很好奇为什么build命令中的“将cd放入tex文件的文件夹”会影响依赖项扫描。