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...

VS2008建立的Qt工程(或项目)生成pro文件

VS2008建立的Qt工程(或项目)生成pro文件 利用VS2008建立的Qt工程(或项目)要使用Qt Creator开发时,需要生成pro文件。下面介绍该过程。 第一步:右击工程(不是解决方案)...

qt的动态链接库生成、使用,还夹带一些pro文件的使用。

咳咳,首先将动态库的生成吧

qmake生成的pro文件中QT变量的说明

下面是QT Assistant中关于QT变量的说明:  If the CONFIG variable contains the qt value, qmake's support for Qt ...

Qt Creator中的.pro文件的详解

简述: 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的。.pro是qmake的工程文件(project);.pri文件可以把 *.pro 文件内的一...

QT中.pro文件的写法

在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从“#”开始,到这一行结束。 2. 指定源文件 SO...

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

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

Qt .pro项目工程文件语法和格式

作者:reille 本博客网址:http://blog.csdn.net/reille/,原创作品,转载请知会:reille@qq.com 本文内容概要: 使用Qt Creator创建工程,会...
  • reille
  • reille
  • 2011-12-04 18:54
  • 3937

详解 QT 中.pro文件的写法

http://mobile.51cto.com/symbian-271078.htm QT 中.pro文件的写法是本文要介绍的内容,在QT中,有一个工具qmake可以生成一个makefile文件,它...

QT中的pro文件的编写

我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。 要自己全部写pro文件又有点麻烦,所以,一般都是先运行       qmake ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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