我使用WDM 编写驱动,工具是VS 2019,我有多个驱动需要生成A.sys B.sys C.sys 他们都有共同使用 了一个代码M.c D.c ; 我的目的是将A B C , M.c D.c组织在一起,执行一次编译就可以同时生成 A.sys B.sys C.sys
我应该怎么组织我的代码工程呢? 只用一个 sln? 和多个project? 有哪些方式呢? 可以用一个Project 同时生成 3个 A.sys B.sys C.sys 吗?
重点:VS2019中可以一个project 同时组织并生成A.sys B.sys C.sys吗? 如果可以,应该怎么配置呢?
一个 project 不能同时生成3个独立的sys, vs编译的基本单位就是project, 他会将所有的源码编译然后链接到一个sys里面,你有3个sys,并且独立都有各自的驱动入口, 放到一个project编译都通不过
3个独立的sys就要建立3个独立的project, 你想一次编译3个sys,那么就将3个project加入到 同一个 解决方案厘里面( sln), 然后 在解决方案 上面右键 <<构建解决方案>> 就会生成3个sys
共同使用 了一个代码M.c D.c, 你可以单独新建一个目录,然后将公用的代码放进去, 然后分别在3个project的源码中添加公共代码
单一解决方案,多个项目:您可以创建一个解决方案(.sln文件),然后在该解决方案中创建三个不同的项目(Asys、Bsys和Csys)。每个项目都可以包含相应的代码文件和依赖项。您可以将共享代码文件McDc添加为所有项目的唯一文件,并在项目中引用它。这样,在进行编译时,编译器会自动处理共享代码。
嵌套项目:除了创建三个¥¥的项目外,您还可以考虑创建一个主项目(如项目A),然后将其它两个项目(B和C)作为嵌套项目添加到主项目中。这样,主项目可以包含共享代码文件McDc,而生成过程中会同时编译其它两个项目。
依赖项目:如果项目B和C依赖于项目A中的代码,您可以将项目B和C设置为项目A的依赖项目。这样,在编译项目B和C时,编译器会自动处理项目A的代码,确保所有依赖关系被正确处理
参考gpt:
结合自己分析给你如下建议:
1.您可以在一个解决方案(sln)中创建多个项目(project),每个项目对应一个驱动程序。然后,您可以将M.c和D.c添加到每个项目中,或者将它们放在一个公共的源文件夹中,并在每个项目的属性中设置附加包含目录。这样,您就可以同时编译所有的项目,并生成A.sys、B.sys和C.sys。
2.您也可以在一个项目中使用不同的配置(configuration)来生成不同的驱动程序。例如,您可以创建一个名为A的配置,它只包含A.c、M.c和D.c,并指定输出文件名为A.sys。同样,您可以创建B和C的配置,分别包含B.c、C.c、M.c和D.c,并指定输出文件名为B.sys和C.sys。然后,您可以在解决方案资源管理器中选择批量生成解决方案,选择要生成的配置,并一次性生成所有的驱动程序。
【以下回答由 GPT 生成】
对于这个问题,我建议你使用一个sln文件和多个project文件来组织你的代码工程。每个驱动程序A、B、C应该有一个单独的project文件,而共享的代码文件M.c和D.c应该包含在每个驱动程序的project文件中。
以下是一种可能的组织方式:
这种组织方式使你能够分离每个驱动程序的代码,并且共享的代码文件可以方便地包含在每个project文件中。你可以根据你的需要添加更多的驱动程序和共享的代码文件。
希望这些步骤可以帮助你组织你的WDM驱动程序工程。如果你有更多的疑问,请随时提问。
创建一个项目(例如,MainProject)。
将共享代码文件(M.c和D.c)添加到MainProject中。
针对每个驱动(A、B、C),创建不同的配置。
针对每个配置,设置不同的宏定义、包含路径等,以区分不同的驱动。