2014-10-30 67 views
0

我正在將make的構建轉換爲scons。該程序包含python代碼,cuda和C++。在make的最後,調用「python setup.py install」來正確地將模塊安裝到站點包中。我如何在scons中調用這個?將工作setup.py文件中的所有代碼複製到scons腳本中似乎沒有生產效率。如何從scons調用python setup.py安裝?

回答

1

查看scons Command builder。使用「命令」構建器,您可以像從命令行那樣運行任何命令。

env = Environment() 
... 
py_install = env.Command('always.install', ['setup.py'], 
         'python setup.py install') 
Alias('install', py_install) 

在上面的例子中,我使用了一個虛擬的目標always.install強制安裝命令始終運行(也有其他方法可以做到這一點,但這是另一個話題)。依賴關係列表僅包含setup.py文件,您可能在此處列出了其他依賴關係。第三項是命令行。建議掃描scons Users Guide;那裏有很多有用的信息。

+0

感謝您的回答。我使用了用戶指南,這很有幫助。我幾乎有它的工作。問題似乎是我需要在setup.py的python目錄中才能正常工作。 env.Command從根目錄運行。我試圖在python調用前放一個「cd python」,但是我得到一個錯誤,系統找不到指定的路徑。也許我應該讓這個構建器能夠使用chdir,但是我們喜歡構建多線程,看起來這可能會導致問題。你會認爲將光盤放入不同的目錄很容易,但事實並非如此。 – 2014-10-31 00:03:54

+0

如果你的'env.Command()'從'python/SConscript'運行,那麼試試這個:'env.Command(...,chdir = 1)'。 (如果你的'env.Command()'從你的'SConstruct'運行,那麼'chdir = 1'將沒有任何效果。) – 2014-10-31 02:41:53

+0

Thanks @Rob。你可以在SConstruct中使用'chdir ='python''命令生成器。 – 2014-10-31 04:00:16