2013-05-26 31 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