2014-10-30 65 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