• 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文件。
  • 相关阅读:
    python的os模块命令
    python的os模块
    albert1017 Linux下压缩某个文件夹(文件夹打包)
    装饰器加不加()
    json和jsonp解决跨域传输数据等
    wsgi
    flask建立数据模型数据类型
    爬虫中
    javaweb学习总结(四)——Http协议
    JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
  • 原文地址:https://www.cnblogs.com/wjcdx/p/8998494.html
Copyright © 2020-2023  润新知