python 辅助makefile 编译

Makefile 的编译文件,在不同操作系统下不同, 我们可以通过识别操作系统对其进行兼容。

在window操作系统,对于不同shell 终端也会不同。

这些对于我们写一个兼容所有情况下的makefile文件面逻很多的困难。

为了快速搞定makefile文件,我们可以使用python获取所有的.c .h文件,自己生成makefile 内容进行编译

from pathlib import Path,PurePath,PureWindowsPath,PosixPath,PurePosixPath,WindowsPath

def get_child_dir(dir, style="posix"):  # win  posix
    ret = []
    for child in dir.glob('**/'):
        if style=="posix":
            ret.append( str(PurePosixPath(child)) )
        else:
            ret.append( str(child) )            
    return ret

def get_C_SOURCES(dirs ):
    ret=[]
    for dir in dirs:
        ret.append(  "C_SOURCES += $(wildcard *.c " + str(dir) + "/*.c)")           
    return ret

def get_C_INCLUDES(dirs):
    ret=[]
    for dir in dirs:
        ret.append(  "C_INCLUDES += -I" + str(dir) )      
    return ret

def get_C_CPP_ProPerties(dirs):
    ret=[]
    for dir in dirs:
        ret.append(  "\"${workspaceFolder}/" + str(dir) + "\"," )      
    return ret

if __name__ == "__main__":
    target_dir = ( "Middlewares","Third_Party", "lvgl")
    dir = Path()
    dir = dir.joinpath(*target_dir)

 

    dirs =get_child_dir(dir)

    c_makefile_statements = get_C_SOURCES(dirs)
    for i in c_makefile_statements:
        print(i)
        
 
    h_makefile_statements = get_C_INCLUDES(dirs)
    for i in h_makefile_statements:
        print(i)

    # c_cpp_property_statements = get_C_CPP_ProPerties(dirs)
    # for i in c_cpp_property_statements:
    #     print(i)

以上文件自动生成需要编译的源文件,以及所有需要包含的头文件目录。

快速构建makefile 文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值