Kam*_*ath 6 c embedded makefile code-maintainability
我正在开发一种嵌入式软件,可以在两到三个不同的微控制器系列上运行.现在我们有makefile,它读取配置开关并进行编译.
对于开发人员和非开发人员来说,使用编译开关和构建配置保持更新的过程变得越来越乏味.我知道Linux内核使用ncurses来生成编译配置.我正在寻找一个类似的工具,但跨平台.它应该在Windows和Linux上运行.我知道这仍然无法解决问题,但它对非开发人员更有吸引力,我也可以快速共享我的.config文件或将其与现有文件进行比较.配置将按特定顺序排列,这里的diff工具将有所帮助.
任何人都可以与类似的项目维护或参考项目(多个微型嵌入式和通用代码库)分享他们的经验.只想了解最佳实践.
PS:语言使用C,8/16位微处理器,没有操作系统只是基于计时器的批处理调度程序(裸机)
我有一个微控制器,但有几个项目是从相同的源代码编译的。我想我的情况和你的情况很相似,至少在某种程度上是这样。我的解决方案也受到了 Linux 内核的启发。
config.h
所有需要访问某些配置参数的源代码只包含一个名为config.h
.
config.h
仅由一行组成:
#include <config/project.h>
Run Code Online (Sandbox Code Playgroud)
project.h
我有几个配置头文件,每个项目一个。Aproject.h
由具有true
、false
、 或常量等值的宏定义组成:
#define CONFIG_FOO true
#define CONFIG_BAR false
#define CONFIG_TIME 100
Run Code Online (Sandbox Code Playgroud)
check.c
该文件检查配置参数的正确性: -必须定义所有参数,即使未使用或对该项目没有意义 - 发出不需要的参数组合信号 - 参数值受到限制。
#if !defined(CONFIG_FOO)
#error CONFIG_FOO not defined
#endif
#if !defined(CONFIG_BAR)
#error CONFIG_BAR not defined
#endif
#if !defined(CONFIG_TIME)
#error CONFIG_TIME not defined
#endif
#if !(CONFIG_FOO ^ CONFIG_BAR)
#error either CONFIG_FOO or CONFIG_BAR should be se
#endif
#if CONFIG_TIME > 250
#error CONFIG_TIME too big
#endif
Run Code Online (Sandbox Code Playgroud)
Makefile
通过指示编译器输出预处理器宏,可以(通过一些sed
表达式)为Makefile
给定项目提供相同的参数值。
归档时间: |
|
查看次数: |
300 次 |
最近记录: |