使用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 ...
随机推荐
- Java线程并发:知识点
Java线程并发:知识点 发布:一个对象是使它能够被当前范围之外的代码所引用: 常见形式:将对象的的引用存储到公共静态域:非私有方法中返回引用:发布内部类实例,包含引用. 逃逸:在对象尚未准备 ...
- 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)
前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...
- TortoiseGIT的安装过程详解
TortoiseGIT简介 TortoiseGIT 是Git版本控制系统的一个免费开源客户端,它是git版本控制的 Windows 扩展.可以使你避免使用枯燥而且不方便的命令行.它完全嵌入 Windo ...
- [No0000A2]“原始印欧语”(PIE)听起来是什么样子?
"Faux Amis"节目中经常提到"原始印欧语"(PIE)——"Proto-Indo-European". 我们说过,英语,法语中的&qu ...
- Java NIO (转)
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(B ...
- [LeetCode] Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最小共同父节点
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- [LeetCode] Longest Valid Parentheses 最长有效括号
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- git初级--配置
source: http://www.cnblogs.com/sakurayeah/p/5800424.html 一.注册github账号 github网址https://github.com/ 下一 ...
- mybatis 调用存储过程
<select id="selectGenCodeBySql" parameterType="hashmap" statementType="C ...
- mysql在空闲8小时之后会断开连接(默认情况)
调试程序的过程发现,在mysql连接空闲一定时间(默认8小时)之后会断开连接,需要重新连接,也引发我对重连机制的思考.