用keil怎么像makefile那样选择哪些文件进行编译?
因为设备有多种不同的型号的硬件,所以就有不同的驱动,我想在编译的时候,像在linux下的makeile那样,自己写一个编译连接的东西,来控制我哪些文件进行编译链接,不知道在keil下有没有这样的方法。
有以下3种方法参考:
1、分开建target,每个target一个项目,创建target时,包含所需的工程文件编译即可。
缺点:项目多时,创建target比较麻烦。
优点:比较不容易出错,因为工程文件较独立,其它target修改时,不会影响到该target。
2、使用条件编译,#define + #if .
编写程序时,用以下方法:
#define xx_driver 1
#define yy_driver 2
#if DRIVER == xx_driver
....
#elif DRIVER == yy_driver
....
#endif
然后在Options for target 中修改C51选项卡下的 define即可。
例如:DRIVER = yy_driver ,则编译时,就会执行条件编译DRIVER == yy_driver。
此方法仅修改KEILC中的配置,不会修改到source code.
3、与方法2类似,新建一个driver.h文件管理驱动。
#define xx_driver 1
#define yy_driver 2
#define DRIVER yy_driver
#if DRIVER == xx_driver
....
#elif DRIVER == yy_driver
....
#endif
以上方法可以结合使用,相信足够你用了。
用keil怎么像makefile那样选择哪些文件进行编译?的更多相关文章
- uboot主Makefile分析(t配置和编译过程详解)
1.编译uboot前需要三次make make distcleanmake x210_sd_configmake -j4 make distclean为清楚dist文件. make x210_sd_c ...
- Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令 PHONY伪目标实践
Makefile的工作流程 http://c.biancheng.net/view/7091.html Makefile文件是什么? 我们教程主要是讲的是 Makefile .很多 Linux(Uni ...
- 将input file的选择的文件清空的两种解决方案
<input type="file" id="fileupload" name="file" /> 上传文件时,选择了文件后想清 ...
- asp.net判断FileUpload选择的文件是否是图片
假如keleyi.aspx页面中有一个ID为fuHovertree的FileUpload控件,那么C#代码怎么判断fuHovertree选择的文件是否是图片呢? 代码如下: HttpPostedFil ...
- .c文件如何编译为ko的MAKEFILE文件编写
首先需要知道: obj-m = *.o obj-y = *.o 上面两者的区别在于,前者才会生成ko文件,后者只是代码编译进内核,并不生成ko文件. 生成KO文件,分两种情况:单个.c文件和多个.c文 ...
- VBA读取可选择文件夹下可选择txt文件内容
Sub OneTxt() '打开一个txt文件 Dim Filename As Variant, extLine&, mArr() As String Dim i%, j% ChDir Thi ...
- Makefile自动生成头文件依赖
前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖 ...
- input type="file"去掉取消默认原来选择的文件
很多时候我们上传文件点击取消后或我们制定了内容格式上传不符合,再次点击input="file"按钮时,选择的文件还是原来的文件,却又上传不.当时想在旁边多添加个按钮清除file里面 ...
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
随机推荐
- Qt入门(4)——Qt常见控件
Qt提供了大量的内建控件及通用对话框可满足程序员的绝大部分要求.我们将对这些控件和对话框作一个大概的介绍. 1. QLabel 定义 QLabel* m_labelOrdered = newQLabe ...
- python遗传算法实现数据拟合
python据说功能强大,触角伸到各个领域,网上搜了一下其科学计算和工程计算能力也相当强,具备各种第三方包,除了性能软肋外,其他无可指摘,甚至可以同matlab等专业工具一较高下. 从网上找了一个使用 ...
- es6新特性:
http://es6katas.org/ es6+一些新特性,截图如下 对应方法,函数显示相关的数据,如图: 对应方法,函数的例子,如下
- (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
/* * POJ_2407.cpp * * Created on: 2013年11月19日 * Author: Administrator */ #include <iostream> # ...
- AIR加载PDF
//系统需要先安装上Adobe Reader import flash.html.HTMLLoader; import flash.html.HTMLPDFCapability; import fla ...
- Problem with generating association inside dbml file for LINQ to SQL
Question: I have created a dbml file in my project, and then dragged two tables from a database into ...
- window+Apache 配置虚拟主机(2)
1. 打开虚拟主机功能 2. 设置虚拟主机相应的文件夹 3. 将虚拟的域名绑定到127.0.0.1 4. 结果图: 记忆一下,突然感觉都忘记了!
- Ubuntu网络管理
1.重启NetworkManager service network-manager stop rm /var/lib/NetworkManager/NetworkManager.state serv ...
- 大数据笔记11:MapReduce的运行流程
1.基本概念 (1)Job & Task (2)JobTracker (3)TaskTracker
- Resharper
http://baike.baidu.com/link?url=H8DVtrvKV1Cg-Hrz82C6ZiJOUXbi_3BfoROe-RlHhctPna4-BFfglPh2OsR-KmCqRZ7_ ...