在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的头文件路径的更多相关文章

  1. VS2010 正则批量替换头文件路径

        最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #include "../../abc/def.h" 类似的头文件引用路径 替换为#include &q ...

  2. linux添加头文件路径

    gcc demo.c -o demo  -I/tools/libevent/include -L/tools/libevent/lib -levent -I:头文件目录 -L:静态库目录 -l:静态库 ...

  3. 使用powershell批量添加Qt的文件(生成pro)

    想使用QtCreator作为编辑器编辑keil或者IAR的工程,需要生成.pro文件,于是使用powershell批量处理. 源码如下: $incPath = dir -filter "*. ...

  4. 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.出现这种问题,首先要确 ...

  5. CodeWarrior 10 添加/修改 头文件路径

    当使用CodeWarrior 10时,默认使用大名鼎鼎的GCC编译器. 我们在构建工程的时候,往往按模块分类文件夹,那么就存在需要包含头文件路径的问题.那么如何加入头文件的路径呢?见下文. 1.打开工 ...

  6. IAR之文件路径设置

    1.命令解释 $PROJ_DIR$表示工程所在路径 $TOOLKIT_DIR$表示IAR安装目录所在头文件路径 \..\表示返回上一级目录. 2.头文件路径设置 打开工程文件,找到"opti ...

  7. powershell小脚本--批量添加用户属性----导出登录时间

    需求1:某公司所有员工少了MAIL属性,需要批量添加.例如,用户chenyy  添加邮件属性chenyy@xxxx.com 先导出(只导出名字)备用: Get-ADUser -Filter * -Pr ...

  8. ARM 编译工具keil 和 IAR 命令行编译和下载

    目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...

  9. PowerShell批量配置VM端点

    我们可以通过PowerShell脚本批量添加VM端点.请您参考以下方案. 准备工作 – PowerShell连接China Azure 1. 从官网下载页面,下载并安装Windows Azure Po ...

随机推荐

  1. Java线程并发:知识点

    Java线程并发:知识点   发布:一个对象是使它能够被当前范围之外的代码所引用: 常见形式:将对象的的引用存储到公共静态域:非私有方法中返回引用:发布内部类实例,包含引用.   逃逸:在对象尚未准备 ...

  2. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...

  3. TortoiseGIT的安装过程详解

    TortoiseGIT简介 TortoiseGIT 是Git版本控制系统的一个免费开源客户端,它是git版本控制的 Windows 扩展.可以使你避免使用枯燥而且不方便的命令行.它完全嵌入 Windo ...

  4. [No0000A2]“原始印欧语”(PIE)听起来是什么样子?

    "Faux Amis"节目中经常提到"原始印欧语"(PIE)——"Proto-Indo-European". 我们说过,英语,法语中的&qu ...

  5. Java NIO (转)

    Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(B ...

  6. [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 ...

  7. [LeetCode] Longest Valid Parentheses 最长有效括号

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  8. git初级--配置

    source: http://www.cnblogs.com/sakurayeah/p/5800424.html 一.注册github账号 github网址https://github.com/ 下一 ...

  9. mybatis 调用存储过程

    <select id="selectGenCodeBySql" parameterType="hashmap" statementType="C ...

  10. mysql在空闲8小时之后会断开连接(默认情况)

    调试程序的过程发现,在mysql连接空闲一定时间(默认8小时)之后会断开连接,需要重新连接,也引发我对重连机制的思考.