一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python實(shí)現(xiàn)生成簡單的Makefile文件代碼示例

Python實(shí)現(xiàn)生成簡單的Makefile文件代碼示例

2019-11-24 15:49junjie Python

這篇文章主要介紹了Python實(shí)現(xiàn)生成簡單的Makefile文件代碼示例,本文給出了兩段實(shí)現(xiàn)代碼,需要的朋友可以參考下

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

 

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

 

復(fù)制代碼代碼如下:


#! /usr/bin/python
'''
 File      : genMakefile.py
 Author    : Mike
 E-Mail    : [email protected]
'''
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

 

運(yùn)行效果如下(示例):

 

復(fù)制代碼代碼如下:


# ./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 $<

 

運(yùn)行腳本后進(jìn)行make即可。

附:

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

復(fù)制代碼代碼如下:


#! /usr/bin/python
'''
  File      : genMakefile.py
  Author    : Mike
  E-Mail    : [email protected]
'''
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,復(fù)制到/usr/local/bin下,以后在需要的目錄里面執(zhí)行如下命令即可:

genMakefile .

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 我与肥熟老妇的性事 | 日韩中文字幕网站 | 婷婷麻豆| 欧美一卡二卡科技有限公司 | 日本精品一卡二卡≡卡四卡 | 91caoporm在线进入| 国产精品免费视频能看 | 女人张开腿让男人桶视频免费大全 | 日本又黄又裸一级大黄裸片 | 好大好想要 | 我被黑人彻底征服的全文 | 国产成人精品视频午夜 | 男人操美女逼视频 | 白丝美女用胸伺候主人 | 国产男女爱视频在线观看 | 99精品视频只99有精品 | 动漫美女3d被爆漫画 | 91视频99| 美女脱小内内给男生摸j | 午夜爱爱爱爱爽爽爽视频网站 | 视频国产91| 公妇乱淫在线播放免费观看 | 99在线精品免费视频九九视 | 91制片厂制作果冻传媒2021 | 福利视频一区青娱 | 天天色视频 | 欧美成人三级伦在线观看 | 成人免费毛片一区二区三区 | 国产精品视频第一区二区三区 | 奇米影视亚洲狠狠色 | 91噜噜噜在线观看 | 精品视频手机在线观看免费 | 18性夜影院午夜寂寞影院免费 | 99热碰 | 亚洲天堂精品在线观看 | 成人日b视频 | nxgx欧美| 特级淫片大乳女子高清视频 | 精品久久久久久久高清 | 精品99一区二区三区麻豆 | 单身男女韩剧在线看 |