欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python實現生成簡單的Makefile文件代碼示例

系統 1855 0

在linux下寫幾個測試程序,還要一行行的輸入g++命令進行編譯,當經常改測試代碼的時候,那一次次的敲(或者一次次的上線箭頭選)也感覺不爽,不如make來的快。用Makefile的好處就不用多說了,這里我寫了個腳本,其功能是自動搜索當前目錄(不包括子目錄)下的“.c”文件生成Makefile文件。

代碼在這里,功能有限(適用于單個文件是一個獨立的測試代碼的情況),需要的朋友可以稍作修改以滿足需求。

復制代碼 代碼如下:

#! /usr/bin/python
'''
?File????? : genMakefile.py
?Author??? : Mike
?E-Mail??? : Mike_Zhang@live.com
'''
import os

def genMakefileStr(dir,surfix = '.c'):
??? msg = ''
??? msg = msg + 'CC = gcc' + '\n'
??? msg = msg +? 'CFLAGS = -g -O2 -Wall' + '\n\n'
???
??? fList = []
??? for dirPath,dirNames,fileNames in os.walk(dir):
??????? for file in fileNames:
??????????? name,extension = os.path.splitext(file)
??????????? if extension == surfix:
??????????????? fList.append(name)
??????? break # only search the current directory
??? str1 = 'all:\n'
??? str2 = ''
??? str3 = 'clean:\n'
??? for f in fList:
??????? str1 = str1 + '\tmake ' + f + '\n'
??????? str2 = ('%s%s:%s.o\n') % (str2,f,f)
??????? str2 = ('%s\t$(CC) -o %s %s.o\n\n') % (str2,f,f)
??????? str3 = ('%s\trm -f %s\n') % (str3,f)
??? str3 = str3 + '\trm -f *.o\n'
??? strClean = '.c.o:\n\t$(CC) $(CFLAGS) -c -o $*.o $<\n'
??? msg = ('%s%s\n%s\n%s\n%s') % (msg,str1,str2,str3,strClean)
??? #print 'msg : \n'
??? #print msg
??? return msg

if __name__ == '__main__':
??? str = genMakefileStr('.','.c')
??? file = open("Makefile","w")
??? file.write(str)
??? file.close()
??? print str

運行效果如下(示例):

復制代碼 代碼如下:

# ./genMakefile.py?????????
CC = gcc
CFLAGS = -g -O2 -Wall

all:
??????? make pfun1
??????? make pfun2

pfun1:pfun1.o
??????? $(CC) -o pfun1 pfun1.o

pfun2:pfun2.o
??????? $(CC) -o pfun2 pfun2.o


clean:
??????? rm -f pfun1
??????? rm -f pfun2
??????? rm -f *.o

.c.o:
??????? $(CC) $(CFLAGS) -c -o $*.o $<

運行腳本后進行make即可。

附:

感覺上面的那個腳本用著不方便,隨后修改修改,代碼如下:

復制代碼 代碼如下:

#! /usr/bin/python
'''
? File????? : genMakefile.py
? Author??? : Mike
? E-Mail??? : Mike_Zhang@live.com
'''
import os,sys
?
surfix = ['.c','.cpp']

def genMakefileStr(dir):
??? msg = ''
??? msg = msg + 'CC = g++ ' + '\n'
??? msg = msg +? 'CFLAGS = -g -O2 -Wall' + '\n\n'
???
??? fList = []
??? for dirPath,dirNames,fileNames in os.walk(dir):
??????? for file in fileNames:
??????????? name,extension = os.path.splitext(file)
??????????? if surfix.count(extension) > 0:
??????????????? fList.append(name)
??????? break # only search the current directory
??? str1 = 'all:\n'
??? str2 = ''
??? str3 = 'clean:\n'
??? for f in fList:
??????? str1 = str1 + '\tmake ' + f + '\n'
??????? str2 = ('%s%s:%s.o\n') % (str2,f,f)
??????? str2 = ('%s\t$(CC) -o %s %s.o\n\n') % (str2,f,f)
??????? str3 = ('%s\trm -f %s\n') % (str3,f)
??? str3 = str3 + '\trm -f *.o\n'
??? strClean = '.c.cpp.o:\n\t$(CC) $(CFLAGS) -c -o $*.o $<\n'
??? msg = ('%s%s\n%s\n%s\n%s') % (msg,str1,str2,str3,strClean)
??? #print 'msg : \n'
??? #print msg
??? return msg
?
if __name__ == '__main__':
??? for arg in sys.argv[1:]:
??????? print arg
??? str = genMakefileStr(arg)
??? if arg[-1] == '/':arg = arg[:-1]
??? file = open(arg+"/Makefile","w")
??? file.write(str)
??? file.close()
??? print str

把文件genMakefile.py改名為genMakefile,復制到/usr/local/bin下,以后在需要的目錄里面執行如下命令即可:

genMakefile .


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一级毛片在线观看视频 | 久久午夜精品 | 日本精品在线播放 | www天天操 | 久久综合亚洲 | 日韩精品手机在线 | 国产成人精品999在线观看 | 日本三级韩国三级香港三级 | 性明星video另类hd | 最近最新中文字幕 | 午夜国产精品视频 | 日韩精品www | 国产精品成人av | 精品成人久久久 | 亚洲一区二区三区四区五区中文 | 欧美日本一道高清二区三区 | 锵锵锵锵锵锵锵锵锵好湿好大 | 午夜国产精品视频 | 亚洲美女天堂网 | 欧美久草视频 | 国产午夜小视频 | 丝袜美腿一区二区三区动态图 | 99国产精品| 久久精品国产线看观看亚洲 | 欧美一区二区黄 | 国产精品福利短视在线播放频 | 一区二区高清在线观看 | 男进女内免费视频无遮挡 | vidz 98hd| 国产欧美一区二区三区另类精品 | 免费二区 | 亚洲精品第一国产综合高清 | 欧美99 | 欧美高清不卡午夜精品免费视频 | 国产精品久久久久无毒 | jizz 亚洲大全 | 国产一区不卡 | 亚洲国产精品一区二区久久 | 站长推荐国产午夜免费视频 | 成人无码T髙潮喷水A片小说 | 国产91在线 | 亚洲 |