zoukankan      html  css  js  c++  java
  • ArcCore重构-Makefile模块化

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5
     
    基本问题
    2. 编译系统中代码文件是否编译及目标文件集中定义在boards/board_common.mk,而非分属各自模块;
     
    每个模块的应当有自己的文件夹,并且有自己的Makefile。在这个Makefile文件中,根据该模块相关的配置开关,决定是否编译某些目标文件。全局范围内涉及到各模块的只有相关的配置开关。这样可以降低耦合,使代码模块化更清晰。
     
    结构如下:

    每个模块的Makefile类似如下:

     如果目标文件在子目录中,则以斜杠(/)结尾。

    如果是目标文件直接跟在后面即可。

     
    那么如何将每个模块目录下的Makefile导入呢?需要编写Makefile代码。如下:

    可以参考Linux kernel的写法。不过需要多个Makefile文件和sub-make进程配合。

    这里我们选择简单实现,在一个Makefile里面导入所有需要的Makefile。
     
    首先,需要大量使用eval来执行Makefile代码片段;
    其次,面临把递归改变为循环的问题。需要把Linux kernel那种递归的方法,改编为循环导入。即是把深度优先遍历,改为广度优先遍历。循环的次数,即为遍历的深度。
     
    所以先找到深度最深的Makefile文件。然后每一次引入下一级目录下的Makefile文件。
  • 相关阅读:
    软件杯华为ModelArts平台
    软件杯第一阶段博客
    《系统架构》阅读笔记05
    第11周周博客
    测试面试题
    杭电2014 (第一次用vector ac题目)
    杭电 2013 猴子吃桃 递归解法&循环解法
    杭电2012 质数问题
    杭电2629 Identity Card
    杭电1170
  • 原文地址:https://www.cnblogs.com/wjcdx/p/8998494.html
Copyright © 2011-2022 走看看