Visual Studio 2012,创建工程Build Driver,基于纯Source Code.

本文详细介绍使用WDK8从dirs和sources文件转换为VS2012项目的步骤,包括项目创建、源文件添加、属性配置等内容,适用于希望了解如何在现代开发环境中构建驱动程序的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拿到一堆纯代码,怎么去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文件,应该是一种基本功吧。

转载于:https://www.cnblogs.com/zzSoftware/p/3296684.html

E:\LSHVR\pc-ble-driver-master\build>cmake -G-A CMake Error: Could not create named generator -A Generators * Visual Studio 17 2022 = Generates Visual Studio 2022 project files. Use -A option to specify architecture. Visual Studio 16 2019 = Generates Visual Studio 2019 project files. Use -A option to specify architecture. Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Borland Makefiles = Generates Borland makefiles. NMake Makefiles = Generates NMake makefiles. NMake Makefiles JOM = Generates JOM makefiles. MSYS Makefiles = Generates MSYS makefiles. MinGW Makefiles = Generates a make file for use with mingw32-make. Green Hills MULTI = Generates Green Hills MULTI files (experimental, work-in-progress). Unix Makefiles = Generates standard UNIX makefiles. Ninja = Generates build.ninja files. Ninja Multi-Config = Generates build-<Config>.ninja files. Watcom WMake = Generates Watcom WMake makefiles. CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files (deprecated). CodeBlocks - NMake Makefiles = Generates CodeBlocks project files (deprecated). CodeBlocks - NMake Makefiles JOM = Generates CodeBlocks project files (deprecated). CodeBlocks - Ninja = Generates CodeBlocks project files (deprecated). CodeBlocks - Unix Makefiles = Generates CodeBlocks project files (deprecated). CodeLite - MinGW Makefiles = Generates CodeLite project files (deprecated). CodeLite - NMake Makefiles = Generates CodeLite project files (deprecated). CodeLite - Ninja = Generates CodeLite project files (deprecated). CodeLite - Unix Makefiles = Generates CodeLite project files (deprecated). Eclipse CDT4 - NMake Makefiles = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - MinGW Makefiles = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files (deprecated). Kate - MinGW Makefiles = Generates Kate project files (deprecated). Kate - NMake Makefiles = Generates Kate project files (deprecated). Kate - Ninja = Generates Kate project files (deprecated). Kate - Ninja Multi-Config = Generates Kate project files (deprecated). Kate - Unix Makefiles = Generates Kate project files (deprecated). Sublime Text 2 - MinGW Makefiles = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - NMake Makefiles = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - Ninja = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - Unix Makefiles = Generates Sublime Text 2 project files (deprecated). CMake Warning: No source or binary directory provided. Both will be assumed to be the same as the current working directory, but note that this warning will become a fatal error in future CMake releases.为什么报错
最新发布
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值