欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 国内真实迷j下药在线观看 人人艹逼 | 国产一区二区三区 | 久久一区二区视频 | 九热在线| 深爱婷婷| 欧美wwww| a级毛片在线免费观看 | 情侣av | 天天射影院 | 奇米影视在线观看 | 亚洲综合在线网 | 美女操网站 | 国产成人高清 | 精品无码国产一区二区日本 | 国产成人精品免费视频大 | 欧美一二三区 | 中文字幕亚洲一区二区三区 | 完全免费在线视频 | 成人午夜影院 | 亚洲黄色片在线观看 | 中国一级特黄毛片大片 | 成人在线视频网站 | 性福演算法| 久久亚洲最大成人网4438 | 日日操夜夜操天天操 | 国产亚洲精品国产一区 | 免费激情 | 欧美一级视频 | 操免费视频 | 午夜a级片 | 美女福利视频国产免费观看 | 免费1级片| 国产精品视_精品国产免费 亚洲综合在线另类色区奇米 | 国产福利视频一区二区 | 99热在线国产 | 精品日韩欧美一区二区三区在线播放 | 精品免费福利视频 | www,久久久| 国产麻豆剧传媒精品好看的片 | 范丞丞星座 | 超碰97免费观看 |