使用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中即可

posted @ 2016-04-28 16:44  Weyne  阅读(2222)  评论(2编辑  收藏  举报