首页
社区
课程
招聘
[分享]创建驱动项目模板
发表于: 2010-8-24 17:59 3179

[分享]创建驱动项目模板

2010-8-24 17:59
3179
在日常的开发中,我们经常要验证某些函数的功能,或者是验证一个简单的想法模型,因此我们经常会去建立一个简单的驱动项目。本人选用的开发环境是Visual studio 2008,在VS2008中可以从winform,web等类型的项目中导出项目模板,可是native C++项目我没有找到相应的导出方法。通过项目模板的使用能够让我们工作得更轻松,但为了写些驱动的例子,我经常重复地设置项目属性。其实可以通过写脚本来同样享受到模板带来的好处,甚至更多。我这里有一个脚本,或许对大家有所帮助。在看雪上学习了这么久,我也希望本文能帮助他人。
1:在工程目录下新建一个文件夹,文件夹下放置批处理文件,项目文件及其它所需要的文件。
2:在新建的文件夹下放置如下的 vbs文件。
3:运行。
4:运行成功后请在工程中添加现有生成的新项目。
5:建议使用nmake类型来生成工程,并在dr_build.bat中使用构建语句及其它功能。
6:qw.vcproj,可以从一个已存在的驱动项目中COPY过来。
'*********************************************
' @file:qw.vbs
'
' @author:Robert Xiao
'
' @Date:2010-3-23
'
' @description:
'   复制必要的文件至本文件目录下。
'   复制驱动模板工程到本文件目录下。
'   更改模板工程的guid属性,工程文件名及涉及到工程名的地方。
'*********************************************

'
'指定要copy的文件名
'
MAKE_FN = "makefile"
SOURCE_FN = "sources"
BUILD_BAT_FN = "dr_build.bat"
CLEAN_BAT_FN = "dr_clean.bat"
PROJECT_FN = "qw.vcproj"
CPP_FN = "driver.cpp"
H_FN = "driver.h"

strName = InputBox("input you project name.")
If strName="" Then
        MsgBox  " can not be empty!"
        wscript.quit
End If
'
' 获取本文件目录及父目录
'
scriptFullName = wscript.scriptfullname
scriptFolderPath = Left(scriptFullName, instrRev(scriptFullName, "\"))
scriptParentFolderPath = Left(scriptFolderPath, Len(scriptFolderPath) -1)
scriptParentFolderPath = Left(scriptParentFolderPath, instrRev(scriptParentFolderPath,"\"))
projectFolder = scriptParentFolderPath & strName &"\"
projectName = strName
projectFullName = projectFolder & projectName & ".vcproj"

'
' 创建文件系统操作对象
'
Set fs = CreateObject("scripting.filesystemobject")
status = True
If fs.FolderExists(projectFolder) Then
        MsgBox "the project folder is exist,it will quit."
        wscript.quit
End If
'
' CopySpecialfiles
'
fs.CreateFolder projectFolder
CopySpecialfiles projectFolder,scriptFolderPath,status
If status=False Then
        errstr = errstr &vbCR & "CopySpecialfiles failed."
End If

ModifyProject status
If status=False Then
        errstr = errstr &vbCR & "ModifyProject failed."
End If

'
' end of program
'
If errstr="" Then
        MsgBox "complete successfullly"
Else
        MsgBox "some error occurred" &vbCR & errstr
End If

'
'
'
Function CopySpecialfiles(targetFolderName,sourceFolderName,status)
On Error Resume Next
        status = True
       
        fs.copyfile sourceFolderName & MAKE_FN, targetFolderName
        fs.copyfile sourceFolderName & SOURCE_FN, targetFolderName
        fs.copyfile sourceFolderName & BUILD_BAT_FN, targetFolderName
        fs.copyfile sourceFolderName & CLEAN_BAT_FN, targetFolderName
        fs.copyfile sourceFolderName & PROJECT_FN, projectFullName
        fs.copyfile sourceFolderName & CPP_FN, targetFolderName
        fs.copyfile sourceFolderName & H_FN, targetFolderName
       
        If Not err.number = 0 Then
                err.clear
                status = False
        End If       
End Function

'
'
'
Function ModifyProject(status)
On Error Resume Next
        status = True
       
        Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        xmlDoc.async = False
        xmlDoc.load(projectFullName)
        If Not xmlDoc.parseError.errorCode = 0 Then
                status = False
                err.clear
        End If
       
        strguid =""
        getGuid strguid, status
        If status =False Then
                Return
        End If
        Set root = xmlDoc.documentElement
        root.setAttribute "ProjectGUID", strguid
        root.setAttribute "RootNamespace", projectName
        root.setAttribute "Name", projectName
        xmlDoc.Save(projectFullName)
End Function

'
'
'
Function getGuid(strGuid,status)
On Error Resume Next
        status = True
        Set TypeLib = CreateObject("Scriptlet.TypeLib")
        strGuid = TypeLib.Guid
        If Not err.number = 0 Then
                status = False
                err.clear               
        End If
End Function

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发jf
2010-8-24 19:27
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
貌似是散分帖,坐下接分。
2010-8-24 22:06
0
游客
登录 | 注册 方可回帖
返回
//