杰理AC70NN项目用脚本自定义添加.mk文件,直接链接进主Makefile脚本编译
问题描述: 当我要一直一个项目文件到706的sdk中,用vscode编译,会报错说未添加路径 ,所以需要自己手动在sdk文件下的Makefile一个一个添加.c文件,这样太繁琐, 是不是可以写一个脚本来做呢, 下面开始教程
前提是你的环境有MinGW,能跑cmake,环境变量必须要有下面2个
下面开始:
先添加这个脚本
脚本代码如下:
@echo off
cd /d "%~dp0\apps\self_code"
cmake . -G "MinGW Makefiles"cd /d "%~dp0"del apps\self_code\makefile /s
del *.ninja /s
del *.cmake /s
del *CMakeCache.txt /sfor /d /r %%i in (*) do (if "%%~nxi"=="CMakeFiles" (rd /s /q "%%i")
)cd ..for /d /r %%i in (*) do (if "%%~nxi"=="objs" (rd /s /q "%%i")
)
下面我们在自己的代码文件夹里面添加这个cmake
代码如下:
cmake_minimum_required(VERSION 3.12)
project(MyProject)# 设置前缀路径,用于 .mk 文件中的路径前缀
set(PREFIX_PATH "apps/self_code")# 获取所有 .c 和 .h 文件(递归)
file(GLOB_RECURSE C_FILES "*.c")
file(GLOB_RECURSE H_FILES "*.h")# 排除构建中间目录
list(FILTER C_FILES EXCLUDE REGEX "CMakeFiles")
list(FILTER H_FILES EXCLUDE REGEX "CMakeFiles")# 创建 .mk 文件,写入 c 源文件路径
file(WRITE "dr_code.mk" "c_SRC_FILES += \\\n")
foreach(file ${C_FILES})file(RELATIVE_PATH rel_path ${CMAKE_SOURCE_DIR} ${file})file(APPEND "dr_code.mk" "\t${PREFIX_PATH}/${rel_path} \\\n")
endforeach()# 添加头文件目录
file(APPEND "dr_code.mk" "\nINCLUDES += \\\n")# 提取所有 .h 所在目录
set(H_DIRS "")
foreach(file ${H_FILES})get_filename_component(dir_path ${file} DIRECTORY)file(RELATIVE_PATH rel_path ${CMAKE_SOURCE_DIR} ${dir_path})if("${rel_path}" STREQUAL ".")# 如果头文件在项目根目录下(即 dr_code),加入空字符串占位list(APPEND H_DIRS "")else()list(APPEND H_DIRS ${rel_path})endif()
endforeach()
list(REMOVE_DUPLICATES H_DIRS)# 写入包含目录
if(H_DIRS)foreach(dir ${H_DIRS})if("${dir}" STREQUAL "")file(APPEND "dr_code.mk" "\t-I${PREFIX_PATH} \\\n")else()file(APPEND "dr_code.mk" "\t-I${PREFIX_PATH}/${dir} \\\n")endif()endforeach()file(APPEND "dr_code.mk" "\t-I${PREFIX_PATH} \\\n")
else()file(APPEND "dr_code.mk" "\t-I${PREFIX_PATH} \\\n")
endif()
最后
回到主页面双击这个脚本就能生成一个mk文件
进去看看mk文件是否生成成功
最后的最后 ,去自己的文件的Makefile链接进去
最后直接在vscode ctrl+shift+b 编译成功