我正在尝试建立一个涉及外部工具的构建,它生成一个目录作为输出(doxyindexer对于好奇的).到目前为止,我基本上得到了这些命令:
target = "doxysearch.db/iamchert"
doxygen.Doxyindexer(target,["project1.xml","project2.xml","project3.xml"])
Default([target])
Default(Install(ARGUMENTS["cgibin"],"doxysearch.db"))
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我认为我想target成为目录本身,而不是目录中的一些随机文件.我没有什么可以全球化的,因为在我构建它之前目标不存在而且我不想假设任何Dimitri可能会改变!当我使用目录作为目标时,我收到此错误:
TypeError: Tried to lookup Dir 'doxysearch.db' as a File.:
Run Code Online (Sandbox Code Playgroud)
这就是我选择iamchert成为目标的原因.这些线条似乎都按预期工作,即使我的方法是黑客.但是,我无法让最后一行工作.我需要将目录复制doxysearch.db到cgi-bin目录中,该目录由用户在命令行中指定.也许有人可以解释如何正确地完成这一步骤?对于scons来说,我是个新人!
我在搜索答案时遇到了麻烦,因为所涉及的所有搜索词都太常见了,无法找到我特别的帮助!
事实上,SCons确实将dir中的所有文件视为该dir的依赖项.有一些黑暗的角落需要工作,但它应该在这样的简单情况下工作.
您需要的是未记录的target_factory构建器标志.当你定义Doxyindexer这样做:
doxyindexer = Builder(..., target_factory=env.fs.Dir)
Run Code Online (Sandbox Code Playgroud)
让你的建造者返回dir本身.这应该避免你得到的TypeError.