使用powershell批量添加Keil和IAR的头文件路径
在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径。当工程结构非常复杂时,文件夹的数量就非常多,特别是从别人那里拷贝过来的工程目录,添加头文件路径就变得非常的繁琐。所以我们需要一个自动化的方法。该方法会搜索工程目录的文件夹和子文件夹,将其中包含了.h文件的路径找出来,并转换成keil和IAR要求的格式。这个难不倒程序员,只是简单的文件查找,再用点正则就行,QT也好,python也好都很容易实现。但是考虑到keil和IAR的工程师不一定装python,打包也不方便,QT的程序也太大,所以选择了相对熟悉的powershell脚本。简单好用,Windows自带,不需要再额外安装或者下载什么。Simple is better than complex。
不多说,直接上脚本:
$incPath = dir -filter "*.h" -Recurse
$txtList="","" foreach($fpath in $incPath)
{
$txtList+=$fpath.DirectoryName
} $txtTemp=$txtList[0]
$txtTemp
#$KeilOut="",""
$KeilOut="Keil include directories`n`n"
$workDir=get-location
$workDir =$workDir -replace "\\","\\"
foreach($txt in $txtList)
{
if($txt -ne $txtTemp)
{
$txtTemp=$txt
$txtTemp +=";"
$KeilOut += $txtTemp -replace $workDir , "."
$txtTemp=$txt
} }
$IAROut="",""
$IAROut += "`nIAR include directories`n"
$txtTemp=$txtList[0]
foreach($txt in $txtList)
{
if($txt -ne $txtTemp)
{
$txtTemp=$txt
$IAROut += $txtTemp -replace $workDir , "`$PROJ_DIR$"
}
}
$KeilOut>incDir.txt
$IAROut>>incDir.txt
看一下运行之后的结果:
Keil include directories
.\ALGORITHM;.\CORE;.\FWLIB\inc;.\HARDWARE\CCD;.\HARDWARE\Laser;.\HARDWARE\LED;.\HARDWARE\MotorSpeed;.\SYSTEM\delay;.\SYSTEM\sys;.\SYSTEM\usart;.\UCOSII\config;.\UCOSII\ports;.\UCOSII\source;.\UCOSII\ucos_cpu;.\USER;
IAR include directories
$PROJ_DIR$\ALGORITHM
$PROJ_DIR$\CORE
$PROJ_DIR$\FWLIB\inc
$PROJ_DIR$\HARDWARE\CCD
$PROJ_DIR$\HARDWARE\Laser
$PROJ_DIR$\HARDWARE\LED
$PROJ_DIR$\HARDWARE\MotorSpeed
$PROJ_DIR$\SYSTEM\delay
$PROJ_DIR$\SYSTEM\sys
$PROJ_DIR$\SYSTEM\usart
$PROJ_DIR$\UCOSII\config
$PROJ_DIR$\UCOSII\ports
$PROJ_DIR$\UCOSII\source
$PROJ_DIR$\UCOSII\ucos_cpu
$PROJ_DIR$\USER
讲解一下怎么使用这个脚本:
1,打开powershell。
有很多方式打开,我习惯WIN+R打开运行,然后输入powershell打开。
2,使用cd 命令切换到Keil或者IAR的工程目录

3,复制上面的脚本到powershell,按ENTER。然后工程目录下会有一个名字为 incDir.txt的文本文件,里面就是头文件路径。
4,将txt中内容复制粘贴到keil或者IAR中即可

使用powershell批量添加Keil和IAR的头文件路径的更多相关文章
- VS2010 正则批量替换头文件路径
最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #include "../../abc/def.h" 类似的头文件引用路径 替换为#include &q ...
- linux添加头文件路径
gcc demo.c -o demo -I/tools/libevent/include -L/tools/libevent/lib -levent -I:头文件目录 -L:静态库目录 -l:静态库 ...
- 使用powershell批量添加Qt的文件(生成pro)
想使用QtCreator作为编辑器编辑keil或者IAR的工程,需要生成.pro文件,于是使用powershell批量处理. 源码如下: $incPath = dir -filter "*. ...
- STM32 关于头文件路径没添加错误问题(cannot open source input file "spi.h": No such file or directory)
error: #5: cannot open source input file "spi.h": No such file or directory 1.出现这种问题,首先要确 ...
- CodeWarrior 10 添加/修改 头文件路径
当使用CodeWarrior 10时,默认使用大名鼎鼎的GCC编译器. 我们在构建工程的时候,往往按模块分类文件夹,那么就存在需要包含头文件路径的问题.那么如何加入头文件的路径呢?见下文. 1.打开工 ...
- IAR之文件路径设置
1.命令解释 $PROJ_DIR$表示工程所在路径 $TOOLKIT_DIR$表示IAR安装目录所在头文件路径 \..\表示返回上一级目录. 2.头文件路径设置 打开工程文件,找到"opti ...
- powershell小脚本--批量添加用户属性----导出登录时间
需求1:某公司所有员工少了MAIL属性,需要批量添加.例如,用户chenyy 添加邮件属性chenyy@xxxx.com 先导出(只导出名字)备用: Get-ADUser -Filter * -Pr ...
- ARM 编译工具keil 和 IAR 命令行编译和下载
目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...
- PowerShell批量配置VM端点
我们可以通过PowerShell脚本批量添加VM端点.请您参考以下方案. 准备工作 – PowerShell连接China Azure 1. 从官网下载页面,下载并安装Windows Azure Po ...
随机推荐
- C# 模板列在绑定的时候取文本值
查了很多资料,都说模板列无法取文本值, 需要使用FindControl, 对于列数很多的情况就要命了, 使用以下方式, 可以循环列的索引,获取到文本值 前台 <asp:TemplateField ...
- APUE学习之出错处理
当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值. errno是全局变量,仅当函数出错才有被改变.对待errno,应注意两条规则 ...
- Django 前后台的数据传递
Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: from django.shortcuts import render def main_page(request): ...
- [No00009E]几种常见的命名规则
变量命名规则 必须遵循的命名规则 1. 变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始php编程中所有变量必须以$开始. 2. 变量名只能是字母(a-z A ...
- [bzoj3932][CQOI2015][任务查询系统] (主席树)
Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si ...
- Spring 下默认事务机制中@Transactional 无效的原因
Spring中 @Transactional 注解的限制1. 同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效 If you use (d ...
- [译]RxJS 5.X基础篇
欢迎指错与讨论 : ) 当前RxJS版本:5.0.0-beta.10.更详细的内容尽在RxJS官网http://reactivex.io/rxjs/manual/overview.html.文章比较长 ...
- [LeetCode] Design Twitter 设计推特
Design a simplified version of Twitter where users can post tweets, follow/unfollow another user and ...
- [LeetCode] Longest Substring with At Most Two Distinct Characters 最多有两个不同字符的最长子串
Given a string S, find the length of the longest substring T that contains at most two distinct char ...
- [LeetCode] 3Sum Closest 最近三数之和
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...