DDK Build编译的时候,使用3个文件来描述被编译的源码,其中SOURCES和Makefile是必须的,而DIRS则只在划分目录的时候有用。Makefile在这里作用并不大但是必须和SOURCES文件成对出现,关键还是SOURCES和DIRS文件。

SOURCES文件用于描述其所在目录下,有哪些文件参与编译,编译的结果应该是什么(是一个lib还是一个sys?),输出目录在哪里,要传递给编译器的各种定义和选项分别是什么,等等。这里有一个概念需要特别的注意,就是由一个SOURCES文件描述的其实就是一个单独的小工程,Build最后会参照SOURCES文件的设置,产生一个指定的目标文件(dll ? lib ? exe ? sys ? 都有可能,完全依赖于SOURCES文件的写法)。

DIRS文件用于描述,在当前目录下,需要被编译的子目录有哪些。注意!DIRS文件和SOURCES文件不能共存在同一个目录下。

举例:工程DDKTest,由3个子模块和一个主模块构成,目录结构如下:

DDKTest
├─Mod_A
├─Mod_B
├─Mod_C
└─Mod_Main
└─dirs      //这里必须有一个dirs文件,告诉DDK的build工具, 当前目录下有哪些文件夹参与编译


dirs的内容是这样:
DIRS = Mod_A Mod_B Mod_C Mod_Main
4个文件夹名字之间以空格间隔,也可以使用 \ 连行符分隔成多行去书写。

在 Mod_A ,Mod_B,Mod_C,Mod_Main 这4个文件夹下,分别含有一个SOURCES文件,每一个用于
告诉Build,自身目录内有哪些文件参与编译,在编译时传递给编译和链接器的参数又是什么,最后要生
成的目标文件是什么类型,等等。

在这个例子中,Mod_A、Mod_B、Mod_C 都是子模块,因此我让他们都生成为lib文件,也就是静态库
文件。而对于Mod_Main ,由于是主模块,因此我们用它生成.sys文件,但是在Mod_Main的
SOURCES文件中,我们必须告诉Build,其他3个子模块生成的lib文件在哪里,并且要求链接器在链接时找到这3个子模块生成的lib,这样才能完整的编译完整个DDKTest项目。

我当时在最后一步这里没搞明白,看看都编译通过生成了6个lib,最后一个主模块一编译挺ok ,一链接一大堆的各种找不到,很是郁闷的。

总结下,其实就是将每个模块都单独的编译成一个lib,最后由主模块在生成目标文件时,和所有已编译好的lib进行链接即可。

DDK Build的DIRS和SOURCE文件的更多相关文章

  1. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

  2. 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件

    大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的source文件种类. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就 ...

  3. Eclipse java项目将普通文件转化为Source文件的操作

    前提:该项目中已经将原有的Source folder删除掉. 右键单击普通文件>Build path>Use as Source Folder.

  4. How to build windows azure PowerShell Source Code

    Download any version source code of Windows Azure Powershell from https://github.com/Azure/azure-sdk ...

  5. vue-cli项目 build后请求本地static文件中的 json数据,路径不对,报错404处理方法

    vue-cli 项目 build  出错点: 1,build生成dist 放在tomcat上 报错,不显示内容  解决办法: config>index.js===>assetsPublic ...

  6. Linux下source文件两种方法

    1.直接source命令加文件 source /etc/rc.d/init.d/functions 2.点(.)加文件 . /etc/rc.d/init.d/functions

  7. docker build doris-0.11.20-release source code

    1. pull doris dev docker image sudo docker pull apachedoris/doris-dev:build-env-1.1 2. dowload doris ...

  8. 转帖---把eclipse默认的编译文件夹build改为web-inf/classess文件夹

    1.在web-info下新奸classess文件夹 2.右键项目  3.选择java build path ————————————

  9. 3)利用Build.php自动创建目录和文件

    (1)首先做法参照: thinkphp5的手册的  命令行--->自动生成目录结构 或者看云的资料:https://www.kancloud.cn/manual/thinkphp5/118021 ...

随机推荐

  1. js事件处理机制

    一.事件处理程序 a.     DOM0级事件处理程序,被认为是元素的方法. var btn=document.getElementById('myBtn'); btn.onclick=functio ...

  2. poj 1363

    这是一道数据结构的问题,用到了栈的知识.题目大意讲的是每一次有N辆车从A到B,但是要将车辆的顺序重新排列,可以通过中转站C来辅助排列,但是C符合先进后出的原则,这一点和栈的特性相同. 整个重新排序的过 ...

  3. linux之log_format

    log_format是指存储日志的时候所采用的格式,可以在/usr/local/nginx/conf/nginx.conf的http字段中设置 下面是一个典型的log_format设置 log_for ...

  4. C#对象复制 ICloneable

    在.net framework中,提供了ICloneable接口来对对象进行克隆.当然,你也可以不去实现ICloneable接口而直接自己定义一个Clone()方法,当然,还是推荐实现ICloneab ...

  5. div的显示和隐藏

    本文从学习角度出发,仅当做笔记.高手可以忽略本文. 借助div的display属性可以实现div的显示或隐藏,而且在隐藏后不占用原来显示的空间. js控制显示和隐藏的代码: <script ty ...

  6. Java 异步处理简单实践

    Java 异步处理简单实践 http://www.cnblogs.com/fangfan/p/4047932.html 同步与异步 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异 ...

  7. Python入门1

    简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承.Python ...

  8. 必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1

    在Windows Server 2008下直接安装SQL Server 2008时,会出现如下错误: 必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1 ...

  9. Navicat(连接) -1之HTTP 设置

    HTTP 设置 HTTP 通道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80).这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接 ...

  10. b/s开发者的困境

    作为一个由内而外都贴着web开发者标签的开发人员,注定会被大多数c/s开发者和通讯接口开发者所鄙视. 在他们看来,从事web开发,肯定很少用到算法,设计模式,多线程等等.我只能说,就我个人的经历来说, ...