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. Recyclerview使用系列教材

    Recylerview越来越多的人使用,本人录制了一套课程,欢迎大家观看,录制的比较仓促,第一课讲解的课程目录有点问题,请大家谅解,目录请看视频外该课程介绍的内容即可. 该课程付费课程包含: 1-Re ...

  2. JavaSE配置文件java.util.Properties【单例模式Singleton】

    如果不是放在src文件夹里面,则: p.load(new BufferedInputStream(new FileInputStream("tank.properties"))); ...

  3. IOC及Bean容器

    1. 接口及面向接口编程 1.1. 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式 对应JA ...

  4. 【转载】ANSYS的APDL与C语言混合编程(实例)

    原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...

  5. isinstance(),issubclass()

    isinstance(object,classinfo) 返回True,如果object是classinfo或者classinfo子class的实例. 如果classinfo是包含type和class ...

  6. Jocket

    https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/diagnosTOC.html https://blo ...

  7. MFC CPtrLink的使用

    if (!m_SALink.IsEmpty()) { POSITION pos = m_SALink.GetHeadPosition(); for (int j = 0; j < m_SALin ...

  8. yum升级CentOS 6.5 kernel至3.10.52

    we will use ELRepo to install kernel 1. rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 2 ...

  9. openssl 心脏滴血

    yum -y update openssl openssl verson rpm -q --changelog openssl | grep CVE-

  10. AHS日志收集的三种方法

    硬件环境:(描述实验机器初始环境) 型号 DL380 G8 序列号   配置扩展   备注   软件环境: □  操作系统:无 连接方式: □  无 实验步骤: 1在ILO里点information点 ...