Visual Studio 2012,创建工程Build Driver,基于纯Source Code.
拿到一堆纯代码,怎么去Create Project,设置Include路径,lib路径,要不要Pre-compile技术,配置Project之间的依赖关系。
SourcesConverter Base on source file.
哎,VS工具不熟,还真不太容易啊!
由于我有现成的win7 build环境,有dirs, sources这些文件,WDK8之前用WDK自带的build.exe,所以基本流程是写好dirs,sources,xx.inc这些文件,在WDK的cmd里敲buid xxxx的命令就可以了。
WDK8之后,VS2012?WDK开始用VS的compiler了,所以需要创建工程,不用之前那套dirs,sources了
所以用WDK8 build driver需要把以前那套dirs,sources做个convert,创建出相应的Project。
大致有3个办法来做convert:
1.打开vs2012, open->convert sources/dirs,然后选中对应的dir,sources文件,vs就会帮你convert了,每个sources文件都会对应一个.vcxproj文件。
2.用Nmake2Msbuild,跟一其实差不多,就是命令行的形式,Nmake2MsBuild dirs...
3.重新创建一个新的driver template,手动把需要的文件加到这个对应的Project里,设置include,link路径,设置defines...
#3居然是recommanded,NM...#3感觉很麻烦。。。
However, Sofar None has succeed,总有各种问题....
(2013/10/15早上终于build成功,并且能运行了~)做个小小的summarize:
1.生成一个KMDF的工程(Based on VS2012)
Visual Studio 2012->File->New->Project: Templates下面选Visual C++ -> Windows Driver -> WDF,创建一个空的Kernal mode Driver(KMDF).
(根据你的需要选择模板,我另一台电脑上VS2012 Templates下面没有 Windows driver,可能跟安装环境(WDK,SDK...)啥的有关系)。
选好路径,取名,OK


用这个Template,VS创建新的Project的时候,会自动帮你生成好两个folder, MyProject, MyProject Package,而我其实不需要这样,我只要一个在我选定的目录下一个project就够了。
于是我把MyProject下面的文件全copy出来,删掉"MyProject Package",而且我其实只想要Header Files, Source Files, 所以我把不需要的也删掉了。
"External Dependencies"不能删,VS解析包括的源文件,会自动生成这些源文件需要的.h文件list.

2.添加源文件
我期望,VS能给我一个界面,让我选择某个文件,VS帮我把所有子目录下的.c文件都加到Project里面来,可惜,VS貌似没这个功能,要么我还没找到...
所以,我需要一个一个目录自己点进去,选择我想添加的文件...还好我一共加起来就20个不到的目录,还是人力可及的....
当然,跟project文件平级,或者project文件下面的子目录,可以在Sulotion Explore里面点"Show all files",那么会稍微方便点,不用老是右键->add->exsiting item。
Ok,类似累了点,好歹也都被我加进来了。
3.配置project属性
右键project->property,重要需要配置如下几点:
a. Toolset: 你用VS的呢,还是WDK的呢,还是...

b. 头文件,lib文件的路径


c. 定义一下宏,路径宏
编译宏应该可以在c/c++->Preprocessor->Preprocessor Definitions里面添加
不过我是修改的.vcxproj工程文件。(后续会讲.vcxproj文件格式)
路径宏:
我期望可以配置宏,如$MyFold=..\..\MySubPath\MyFold, 那我要访问MyFold下面的路径就不用每次都写那么长了,$MyFold\xx就可以了。文件多的话,很有用的。
可惜还没找到类似的图形界面,Google了一下,貌似需要自己修改.vcxproj工程文件...
会让我在添加一些路径的时候更加方便,也是在.vcxproj文件里面修改的。
d. Others: 工程引用,disable warning, precompile, optimize...
按需配置吧。
e.备注
%(AdditionalIncludeDirectories), %(PreProcessorDefinitions), $(IntDir),$(TargetName),$(ProjectDir),$(VCInstallDir)。。。这些都是VS预留的宏,含义自己理解,
$(IntDir):intermediate directory,就是那些obj文件存放的路径
最后稍微分析下工程文件跟solution文件的格式吧。
.sln文件:
Project
枚举solution包括的project
EndProject
Global
GlobalSection
//solution配置
EndGlobalSection
GlobalSection
//solution配置
EndGlobalSection
GlobalSection
//solution配置
EndGlobalSection
EndGlobal
.vcxproj文件:
一开始觉得.vcxproj不好看,其实耐心点看完,发现其实还好,格式蛮好理解的~
<?xml version="1.0" encoding="utf-8"?>
<Project xxxxxxxxx >
<ItemGroup Label="ProjectConfigurations">
</ItemGroup>
<PropertyGroup Label="Globals">
//可以在这里加路径宏,这是全局的
//<MP>..</MP>,定义了$MP=..
</PropertyGroup>
<PropertyGroup Condition="xxx" Label="Configuration">
//定义Project在condition下的相应配置,tool set之类。
</PropertyGroup> <ItemDefinitionGroup Condition="xxx">
<ClCompile>
//可以在这里添加编译用的宏
//比如:<PreProcessorDefinitions>%(PreProcessorDefinitions);WIN32=1</PreProcessorDefinitions>
</ClCompile>
<Link>
//Link相关的路径
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="xx.c" />
</ItemGroup>
</Project>
对于一个software engineer来说,如果把一堆source code成功Build出相应Bin文件,应该是一种基本功吧。
Visual Studio 2012,创建工程Build Driver,基于纯Source Code.的更多相关文章
- Visual Studio 2012创建SQL Server Database Project提示失败解决方法
新建一个SQL Server Database Project,提示: Unable to open Database project This version of SQL Server Data ...
- 解决Visual Studio 2015创建工程时的“DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' failed to install.”错误
前段时间发布了Visual Studio2015,在后,发现创建Asp.Net工程和时,出现了"DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' f ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)
前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言1
在Visual Studio 2012中使用VMSDK开发领域特定语言(一) 前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modelin ...
- Visual Studio 2012 trial version
Update: vs2012.5.iso http://download.microsoft.com/download/9/F/1/9F1DEA0F-97CC-4CC4-9B4D-0DB45B8261 ...
- Visual Studio 2012使用水晶报表Crystal Report
原文:Visual Studio 2012使用水晶报表Crystal Report SAP在 2013年1月14日 released SAP Crystal Reports,developer ver ...
- [开发笔记]-Visual Studio 2012中为创建的类添加注释的模板
为类文件添加注释,可以让我们在写代码时能够方便的查看这个类文件是为了实现哪些功能而写的. 一:修改类文件模板 找到类模版的位置:C:\Program Files (x86)\Microsoft Vis ...
- 【转载】在 Visual Studio 2012 中创建 ASP.Net Web Service
在 Visual Studio 2012 中创建 ASP.Net Web Service,步骤非常简单.如下: 第一步:创建一个“ASP.Net Empty Web Application”项目 创建 ...
- [Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test)
Visual Studio 2012可以说是迄今为止微软VS开发工具中用户体验最好的产品,无论是速度还是体验以及功能,都非常出色,但是,使用了一段时间后发现有一个之前版本VS都有的功能却在Visual ...
随机推荐
- spring mvc中几种获取request对象的方式
在使用spring进行web开发的时候,优势会用到request对象,用来获取访问ip.请求头信息等 这里收集几种获取request对象的方式 方法一:在controller里面的加参数 public ...
- LVS、keepalived原理及配置
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负 ...
- (转)手游应该怎么做 UI 设计?
之前一直做互动设计,在UI上有一些积累. 转战手游后发现,有着标准.互动方式.用户行为等等与常规大屏UI设计的不同,但是在设计流程,思考方式上是一样的. 以目前项目中一个界面为例(未完成版本)来说一下 ...
- connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)
nginx + php做服务,在高并发的时候会出现一些错误 connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporar ...
- Mysql基础1-基础语法-字段类型
主要: 基础 字段类型 基础 基本概念 1) 数据库分类 层次数据库,网状数据库,关系数据库 常见:SQL Server, Oracle,infomix,sybase,ibmDB2,Mysql 2)数 ...
- 02---Nginx
Nginx .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: ...
- (数据科学学习手札12)K-means聚类实战(基于R)
上一篇我们详细介绍了普通的K-means聚类法在Python和R中各自的实现方法,本篇便以实际工作中遇到的数据集为例进行实战说明. 数据说明: 本次实战样本数据集来自浪潮集团提供的美团的商家信息,因涉 ...
- (数据科学学习手札08)系统聚类法的Python源码实现(与Python,R自带方法进行比较)
聚类分析是数据挖掘方法中应用非常广泛的一项,而聚类分析根据其大体方法的不同又分为系统聚类和快速聚类,其中系统聚类的优点是可以很直观的得到聚类数不同时具体类中包括了哪些样本,而Python和R中都有直接 ...
- stm8编程tips(stvd)
编译完成时显示程序占用的flash和ram大小 将附件压缩包中的mapinfo.exe解压到stvd的安装路径\stvd中 在工程上点右键选settings 右侧的选项卡选择Linker,将categ ...
- LARK BOARD开发板入门学习-第2篇
1. 本次主要研究下HDMI接口,使用芯片是CH7033,这个芯片可以接VGA和HDMI两种接口,和FPGA的接口是地址数据总线 2. 值得注意的地方,下图的D1,双二极管BAT54S在电路中一般用于 ...