2013-05-26 33 views
4

scons中的许多内置构建器都有$ * COMSTR变量,这些变量用于更改其关联Builder的默认输出。我们可以使用$ * COMSTR变量来选择性地使我们的构建过程更清晰。如何在'scons'中为命令生成器指定COMSTR

我想为命令生成器设置一个$ * COMSTR变量。

target = 'mydb.db3' 

populatesql = 'populate.sql' 
sources = [populatesql] 

command = '@sqlite3 $TARGET < ' + populatesql 

built_database = env.Command(target, sources, command) 

我发现我可以前缀与“@”字符,无法输出我的命令,但我一直无法发现如何利用与命令生成器$ * COMSTR。我在这里错过了一招吗?

谢谢。

回答

6

您不会将命令字符串与构建器相关联。命令字符串与一个Action对象关联。

如果你想有一个命令字符串,只写是这样的:

built_database = env.Command(target, sources, 
          Action('mySqlite3', 'Generating $TARGET with sqlite3')) 

,或者如果你想有更多的微调

env['SQLITE3COMSTR'] = 'Generating $TARGET from $SOURCES with sqlite3' 
... 
built_database = env.Command(target, sources, Action('mySqlite3', '$SQLITE3COMSTR')) 
+0

在您的示例代码,什么是字符串“mySqlite3”以及如何将其映射到shell命令? – rustushki

+0

使用你想要的任何shell命令。 '@ sqlite3 $ TARGET <$ SOURCE'在你的情况下,可能是 –

+0

谢谢汤姆,这正是我所需要的。非常感谢! – rustushki