制作一个Makefile

时间:2009-07-11 21:23:10

标签: c++ python c makefile

如何制作Makefile,因为这是按源代码分发程序时的最佳方式。请记住,这是针对C ++程序的,我是从C开发世界开始的。但是有可能为我的Python程序制作一个Makefile吗?

6 个答案:

答案 0 :(得分:11)

从您的问题来看,这听起来像是一个教程或Makefiles实际上可能对您有所帮助的概述。

一个好的起点是GNU Make文档。

它包括以下概述“make实用程序自动确定需要重新编译大型程序的哪些部分,并发出命令以重新编译它们。”

前三章涵盖:

  1. 制作概述
  2. Makefile简介
  3. 编写Makefile

答案 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