如何制作Makefile,因为这是按源代码分发程序时的最佳方式。请记住,这是针对C ++程序的,我是从C开发世界开始的。但是有可能为我的Python程序制作一个Makefile吗?
答案 0 :(得分:11)
从您的问题来看,这听起来像是一个教程或Makefiles实际上可能对您有所帮助的概述。
一个好的起点是GNU Make文档。
它包括以下概述“make实用程序自动确定需要重新编译大型程序的哪些部分,并发出命令以重新编译它们。”
前三章涵盖:
答案 1 :(得分:6)
我在一些Python项目中使用Makefiles,但这非常可疑......我做的事情如下:
SITE_ROOT=/var/www/apache/...
site_dist:
cp -a assets/css build/$(SITE_ROOT)/css
cp -a src/public/*.py build/$(SITE_ROOT)
等等。 Makefile只是批处理执行系统(而且相当复杂)。您可以像使用GCC一样使用普通的Python工具(生成.pyc和其他工具)。
PY_COMPILE_TOOL=pycompiler
all: myfile.pyc
cp myfile.pyc /usr/share/python/...wherever
myfile.pyc: <deps>
$(PY_COMPILE_TOOL) myfile.py
然后
$ make all
等等。就像对待任何其他操作一样对待您您的pycompiler
可能很简单:
#!/usr/bin/python
import py_compile
py_compile.compile(file_var)
或
的一些变化$ python -mcompileall .
一切都是一样的。 Makefile并不特别,只是自动执行和检查文件是否需要更新的能力。
答案 2 :(得分:4)
简单Makefile
通常由一组目标,其依赖关系以及每个目标执行的操作组成:
all: output.out
output.out: dependency.o dependency2.o
ld -o output.out dependency.o dependency2.o
dependency.o: dependency.c
gcc -o dependency.o dependency.c
dependency2.o: dependency2.c
gcc -o dependency2.o dependency2.c
目标all
(这是示例中的第一个)并尝试构建其依赖项,以防它们不存在或不是最新的。将在make
命令中未指定目标参数时运行。
答案 3 :(得分:4)
我如何制作MakeFile,因为这是通过源代码分发程序时的最佳方式
不是。例如,KDE使用CMake,而Wesnoth使用SCons。我建议使用其中一个系统,它们比make更容易,更强大。 CMake可以生成makefile。 : - )
答案 4 :(得分:3)
对于Python程序,它们通常与setup.py
脚本一起分发,该脚本使用distutils
来构建软件。 distutils
有广泛的documentation,这应该是一个很好的起点。
答案 5 :(得分:1)
如果您询问有关创建Makefile的便携式表单,可以尝试查看http://www.cmake.org/cmake/project/about.html