python之生成Qt pro文件

原创 2015年11月19日 00:26:34

##genQtPro.py

import os,sys,re
import shutil,string

#	[OK]
#	global var for app
#	calc the baseLen, we should add the divator char '/' or '\'
gBaseLen = len(os.getcwd()) + 1
gSrcList = "SOURCES += \\" + "\n"
gHeadList = "HEADERS += \\" + "\n"
gUiList = "FORMS += \\" + "\n"
gTarget = "Test"
argLen = len(sys.argv)
if argLen >= 2:
	gTarget = sys.argv[1]
if gTarget.find('.') != -1:
    gTarget = gTarget.split('.',1)[0]

###################################################################################################
#   define the blakc list,which we ignore (dirname)                                             [OK]
###################################################################################################
bUseWhite = False
gRangeList = ["debug"]

###################################################################################################
#   Judge one file can be accessed through the black or white list.                             [OK]
###################################################################################################
def canAcessFile(file):
	global bUseWhite,gRangeList
	bInRange = (file in gRangeList)
	return (bUseWhite and bInRange ) or (not bUseWhite and not bInRange)

###################################################################################################
#	walk the dirname,
#	if type is file,then call pFunc to process it.
#	if type is dir,then recurse to walk the dir.                            [OK]
###################################################################################################
def getList(dirname,pFunc):
    try:
        ls=os.listdir(dirname)
    except:
        print dirname,'is access deny'
    else:
        for file in ls:
            temp = os.path.join(dirname,file)
            if(os.path.isdir(temp)):
                if canAcessFile(file):
                    getList(temp,pFunc)
            else:
                pFunc(dirname,file)

###################################################################################################
#   define the blakc list,which we ignore (dirname)
###################################################################################################
def convertDivChar(path):
	return path.replace('\\','/')
	
###################################################################################################
#   this function is used to process the certain file && dirname.                           [OK]
###################################################################################################
def printFile(dirname,file):
	global gSrcList,gHeadList,gUiList
	newPath = ""
	if len(dirname) == gBaseLen:
		newPath = file
	else:
		newPath = dirname[gBaseLen:] + "/" + file
	#filter
	if newPath[0] == '/':
		newPath = newPath[1:]
	newPath = convertDivChar(newPath)
	if re.search("\.h$",newPath):
		gHeadList = gHeadList + "\t" + newPath + " \\" + "\n"
	if re.search("\.hpp$",newPath):
		gHeadList = gHeadList + "\t" + newPath + " \\" + "\n"
	if re.search("\.cpp$",newPath):
		gSrcList = gSrcList + "\t" + newPath + " \\" + "\n"
	if re.search("\.c$",newPath):
		gSrcList = gSrcList + "\t" + newPath + " \\" + "\n"
	if re.search("\.ui$",newPath):
		gUiList = gUiList + "\t" + newPath + " \\" + "\n"

###################################################################################################
#   write string to file.                          [OK]
###################################################################################################
def writeToFile(str,fname):
	fp = open(fname,"w")
	fp.write(str)
	fp.close()

###################################################################################################
#   read content from fname.
###################################################################################################
def readFile(fname):
	with open(fname, 'r') as f:
		return f.read()

###################################################################################################
#   generate the pro body.
###################################################################################################
def getBasicHead():
	ret = "#hand-generate-code"
	ret = "%s\n%s" % (ret,"QT	+= core gui")
	ret = "%s\nTARGET = %s" % (ret,gTarget)
	ret = "%s\n%s" % (ret,"TEMPLATE = app")
	ret = "%s\n%s" % (ret,"")
	ret = "%s\n%s" % (ret,"#LIBS	+= -L/usr/lib/mysql -lmysqlclient")
	ret = "%s\n%s" % (ret,"#INCLUDEPATH += /usr/include/mysql\n\n")
	return ret

###################################################################################################
#   generate the pro body.
###################################################################################################
gKeyword = "#auto-generate-code#"
getList(os.getcwd(),printFile)
gContent = ""
gFname = "%s.pro" % (gTarget)
if os.path.exists(gFname):
	print "Update"
	cnt = readFile(gFname)
	pos = cnt.find(gKeyword)
	gContent = cnt[0:pos]
else:
	print "Create"
	gContent = getBasicHead()

fOutCnt = "%s%s\n\n%s\n%s\n%s" % (gContent ,gKeyword ,gHeadList ,gSrcList ,gUiList)
writeToFile(fOutCnt ,gFname)


@@生成Qt的pro文件

topro CmdWifi

生成CmdWif.pro

QT的qmake 通过pro文件生成vs工程

在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从“#”开始,到这一行结束。 2.模板变量告诉qm...
  • cwjjamk
  • cwjjamk
  • 2013年08月29日 13:03
  • 1080

Qt 工程 pro文件

转自:http://www.cnblogs.com/Braveliu/p/5107550.html 工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下。于此备录,分享共勉。 为了更好的理...
  • zzwdkxx
  • zzwdkxx
  • 2016年05月12日 16:35
  • 959

Qt中pro文件的详细介绍

学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理。 Qt程序一般使用Qt提供的qmake工具来编译。 qma...
  • GraceLand525
  • GraceLand525
  • 2016年08月21日 22:00
  • 1738

qmake使用方法(自动生成Makefile文件)

qmake的使用简介 下面是qmake的简单介绍和使用要领,更为详细的信息请参阅手册 qmake的介绍 手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几...
  • u013485792
  • u013485792
  • 2016年04月06日 16:58
  • 3590

QT中PRO文件写法的详细介绍

转自http://blog.csdn.net/adriano119/article/details/5878169 http://www.cnblogs.com/braver/articles/...
  • talking12391239
  • talking12391239
  • 2016年07月20日 13:49
  • 5826

Qt pro 文件详解

 Qt pro 文件详解 1. TEMPLATE  变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件。Qmake  工具定义了5种模板:  ...
  • housonglin1213
  • housonglin1213
  • 2016年07月15日 08:57
  • 733

QtCreator的pro文件的一个通用配置

#------------------------------------------------- # # PS:应将此配置放置在pro文件的最后, 否则可能会不起作用 # # 以下配置为程...
  • wajh07
  • wajh07
  • 2014年07月14日 20:21
  • 5134

QT pro文件详细写法+实例

TEMPLATE:这个变量是用来定义你的工程将被编译成什么模式。如果没有这个设置,系统将默认编译为application。                    TEMPLATE=app表示这个pr...
  • jzh1988903
  • jzh1988903
  • 2014年11月28日 19:30
  • 2395

Qt的.pro工程文件语法学习

Qt的.pro工程文件语法学习   我们编写Qt应用程序时,不管使用Qt Creator还是VS或者Eclipse,不管是Qt Widgets还是Qt Quick,总会发现有.pro文件,我们称.p...
  • luckydarcy
  • luckydarcy
  • 2016年01月15日 12:25
  • 1986

qt pro文件和pri文件的区别

本文只能抓住一条线,简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件:干嘛用的,如何用的 *.pro qmake 的工程(project)文件,这个大家肯定都非常熟悉了。...
  • guochang7511
  • guochang7511
  • 2014年03月27日 11:08
  • 1329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python之生成Qt pro文件
举报原因:
原因补充:

(最多只允许输入30个字)