2009-07-11 24 views
2

如何製作Makefile,因爲這是通過源代碼分發程序的最佳方式。請記住,這是一個C++程序,我開始在C開發世界。但是可以爲我的Python程序創建一個Makefile嗎?製作Makefile

+4

等等...你想爲你的* Python *應用程序生成一個makefile文件?爲什麼? – 2009-07-11 21:23:58

+0

是的,但我也想爲我的C項目。 Python MakeFile這只是一個想法。謝謝。 – 2009-07-11 21:26:03

+0

你在騙我們嗎?秒在一個小時內放錯了問題http://stackoverflow.com/questions/1114658/download-file-using-c – 2009-07-11 22:13:58

回答

11

從你的問題來看,它聽起來像是一個教程,或者是Makefiles實際上做什麼的概述可能會使你受益。

一個好的開始是GNU Make文檔。

它包含以下概述「make實用程序自動確定需要重新編譯哪些大型程序,併發出重新編譯它們的命令。」

而其前三個章節包括:

  1. 概述使
  2. 簡介Makefile文件
  3. 寫Makefile文件
6

我使用的Makefile一些Python項目,但是這是非常可疑的。我做這樣的事情:

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 . 

一些變化,是完全一樣的。 Makefiles沒什麼特別之處,只是自動執行和檢查文件是否需要更新的能力。

+0

感謝Python部分幫助! – 2009-07-11 21:34:05

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命令中沒有指定目標參數時運行。

4

我怎樣才能使生成文件,因爲它是按源代碼分發程序的最佳方式

不是。例如,KDE使用CMake,Wesnoth使用SCons。我會建議這些系統中的一個,它們比製造更容易,更強大。 CMake可以生成makefile。:-)

3

對於Python程序,它們通常與以打造使用distutils一個setup.py腳本分佈式軟件。 distutils有廣泛的documentation這應該是一個很好的起點。