DDK Build的DIRS和SOURCE文件
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文件的更多相关文章
- java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面
将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...
- 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的source文件种类. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就 ...
- Eclipse java项目将普通文件转化为Source文件的操作
前提:该项目中已经将原有的Source folder删除掉. 右键单击普通文件>Build path>Use as Source Folder.
- How to build windows azure PowerShell Source Code
Download any version source code of Windows Azure Powershell from https://github.com/Azure/azure-sdk ...
- vue-cli项目 build后请求本地static文件中的 json数据,路径不对,报错404处理方法
vue-cli 项目 build 出错点: 1,build生成dist 放在tomcat上 报错,不显示内容 解决办法: config>index.js===>assetsPublic ...
- Linux下source文件两种方法
1.直接source命令加文件 source /etc/rc.d/init.d/functions 2.点(.)加文件 . /etc/rc.d/init.d/functions
- 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 ...
- 转帖---把eclipse默认的编译文件夹build改为web-inf/classess文件夹
1.在web-info下新奸classess文件夹 2.右键项目 3.选择java build path ————————————
- 3)利用Build.php自动创建目录和文件
(1)首先做法参照: thinkphp5的手册的 命令行--->自动生成目录结构 或者看云的资料:https://www.kancloud.cn/manual/thinkphp5/118021 ...
随机推荐
- setImageBitmap和setImageResource
同样的布局文件,小分辨率手机: 1.使用setImageBitmap设置时,出现如下现象: 2.使用setImageResource时,图片显示正常 原因: setImageResource(id) ...
- Couldn't open file on client side, trying server side 错误解决
09-09 09:43:21.651: D/MediaPlayer(3340): Couldn't open file on client side, trying server side09-09 ...
- FlashFXP 破解代码
FlashFXP RealKEY: ------------- 将以下内容COPY到软件里面的注册框即可 ------------- FLASHFXPwQAOlhkgwQAAAAC6W5MNJwTns ...
- Spring源码学习之:ClassLoader学习(4)
转载:http://www.codeceo.com/article/java-classloader.html 一:什么是ClassLoader?===>大家都知道,当我们写好一个Java程序之 ...
- validate
<?php $rules = [ "ip" => function ($var) {return ip2long($var);}, "email" ...
- 数据库之mysql存储程序
什么时候会用到存储过程 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度2.当对数据库进行复杂操作时 ...
- js获取当前时间&js 页面时钟
js获取当前时间 //获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = ...
- 【支付专区】之对字符串数据进行Base64位加密,解密
加密,解密 String pwd="测试"; byte[] bytes = pwd.getBytes("UTF-8"); //加密 String pwdNew= ...
- 为什么要用Maven?
早期还在学怎么用Ant构建项目时,就有看到说Maven是Ant的替代品,但真正意义去了解Maven,还是因为以前的公司一老员工在做OpenJMS二次开发时,从网上下载了源码,然后用Maven构建它. ...
- GC之七--gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...