如何使用Scons和Substfile将文件嵌入到模板中?

时间:2017-07-08 13:40:48

标签: scons

我正在尝试创建一个Substfile规则,该规则将扩展另一个文件的转换内容的键。我不清楚这里的设置,以确保源文件被注册为依赖项。

逻辑上我想要类似的东西:

out = env.Substfile( 'file.in', SUBST_DICT = {
     '%SOME_CONTENT%': transform( readfile('depends.txt') ),
}

1 个答案:

答案 0 :(得分:0)

我正在使用ActionCommand的组合来做我想要的事情。我最终没有使用Substfile,尽管它可能被链接到命令。

RawStringIt操作会加载文本文件并为内容发出C ++编码的原始字符串。

def RawStringIt(varName):
    def Impl(target, source, env):
        content = source[0].get_text_contents()
        with open(target[0].get_path(), 'w') as target_file:
            target_file.write( "std::string {} = R\"~~~~({})~~~~\";".format(varName,content))
        return 0

    return Action(Impl, "creating C++ Raw String $TARGET from $SOURCE" )

base_leaf = env.Command( 'include/runner/base.leaf.hpp', '../share/base.leaf', RawStringIt("dataBaseLeaf") )