当前位置: 首页 > news >正文

杰理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 编译成功
在这里插入图片描述

http://www.dtcms.com/a/284504.html

相关文章:

  • 开通腾讯位置复位
  • 深入理解Collections.addAll方法
  • 【华为】交换机vlan互访实验
  • 【人工智能99问】梯度消失、梯度爆炸的定义、后果及规避手段?(7/99)
  • JAVA面试宝典 -《Kafka 高吞吐量架构实战:原理解析与性能优化全攻略》
  • UE5多人MOBA+GAS 25、创建数据表初始化属性,使用MMC计算伤害
  • 模块化社交新范式:Moments用极简设计重构数字表达
  • 麒麟信安参编的三项软件供应链安全团体标准发布
  • 运维工程师面试题174道
  • 单片机最小系统硬件调试踩的一些坑
  • lesson16:Python函数的认识
  • Linux手动安装Nginx(基于Centos 7)
  • ESLint 完整功能介绍和完整使用示例演示
  • 01项目管理概论
  • Shell变量
  • 操作系统系统面试常问(进程、线程、协程相关知识)
  • Java使用FastExcel实现Excel文件导入
  • 基于springboot+vue+mysql框架开发的景区民宿预约系统的设计与实现(源码+论文)
  • 政务类产品的用户场景如何描述
  • STM32 DMA通信详解
  • Qt CMake 学习文档
  • 优化 CSS 性能
  • 设计模式是什么呢?
  • Spring AI之Prompt开发
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1
  • 理解 PS1/PROMPT 及 macOS iTerm2 + zsh 终端配置优化指南
  • 【AI大模型应用开发】Prompt提示词工程
  • 013【入门】队列和栈-链表、数组实现
  • IPC进程间通信 interprocess communicate
  • Expr系列1(函数,表达式,约束系统)