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 文件