我正致力于将项目从scon转换为autotools,因为我似乎自动生成了许多在SConscript (例如make uninstall)中编写的令人讨厌的特性。
这个项目主要是基于c++的,但也包括一些用python编写的模块。在阅读了大量的自动工具之后,我最终可以创建一个共享库,编译并链接一个可执行文件,并安装c++头文件。可爱的。现在他们变成了蟒蛇的一部分。通过将AM_PYTHON_PATH包含在configure.ac中,我还安装了包含Makefile.am文件的Makefile.am模块,如
autopy_PYTHON=autopy/__init__.py autopy/noindent.py autopy/auto.py submoda_PYTHON=autopy/submoda/moda.py autopy/submoda/modb.py autopy/submoda/modc.py autopy/submoda/__init__.py submodb_PYTHON=autopy/submodb/moda.py autopy/submodb/modb.py autopy/submodb/modc.py autopy/submodb/__init__.py
autopydir=$(pythondir)/autopy submodadir=$(pythondir)/submoda submodbdir=$(pythondir)/submodb
dist_bin_SCRIPTS=scripts/script1 scripts/script2 scripts/script3
这似乎将我的所有模块和脚本放置在适当的位置,但我想知道这是否“正确”,因为安装python模块的方式似乎是通过distutils通过setup.py脚本安装的。我在python模块中有setup.py脚本,scon在使用autotools之前一直在调用它们。一种方法比另一种更好吗?当我用自动工具构建时,我还应该继续使用setup.py吗?我想了解人们通常如何使用自动工具使用c++和python模块解析构建。我还有很多其他的自动工具问题,但我会留着以后再问。
发布于 2016-05-21 23:28:52
根据您的描述,我建议您使用库存自动工具构建项目--生成的configure和Makefile,即autoconf和automake,并让configure或Makefile负责执行setup.py,以便设置Python位。
我有一个项目,主要是C/C++代码,还有一个Perl模块。这与您所要做的非常相似,只是它是Perl而不是Python。
在我的Makefile (由Makefile.am生成)中,我有一个目标,它执行Perl模块的Makefile.PL,类似于Makefile.PL的setup.py,并且以这种方式将Perl模块与其余的C++代码一起无缝地构建为一个单独的构建。效果相当好。
automake's Makefile.am是非常开放和灵活的,可以很容易地进行调整和扩展以合并外国比特,就像这样。
https://stackoverflow.com/questions/37368441
复制相似问题