上一篇文章已经讲了如何手动调用Keil的C51编译器来编译我们的工程,今天跟大家说说如何在SlickEdit环境下配置编译命令。
-
首先新建一个SlickEdit工程
假设工程路径为'D:51',在Build System界面下选择第二个选项,
配置 Build 命令的 Command Line为D:51automake.cmd,此文件内容下面将贴出来。
这样便完成了配置过程。其实最核心的地方就在automake.cmd文件,下面将对此文件的关键内容做一些讲解。
-
关键内容讲解
(1)变量声明:SET PROJECT=D:51 声明PROJECT变量的值为D:51,之后需要引用此变量时,需用%PROJECT%。
(2) 变量值替换,格式为,%VAR:oldstr=newstr%, VAR为变量名,oldstr将替换成newstr;
例:SET OUTPUT=D:5151.hex,则%OUTPUT:.hex=% 将为 D:5151,即把.hex替换成空字符串。
(3)文件枚举,格式为:for /r 'PATH' %%i in (*.c) do (….)
/r表示搜索子目录,'PATH'为所要搜索的文件,*.c为所要搜索的类型。 Do 后面填写所要执行的操作。
(4)for循环内的变量多次赋值:
在for语句里面重复对同一变量多次赋值时才需要使用'!',并且在使用'!'调用变量时,要首先'启用延迟环境变量扩充',启动命令为:SetLocal EnableDelayedExpansion。另外需要说明的是,'启用延迟环境变量扩充'后,所有的'!'都将被视为'取变量值'的特殊符号,即使用'^!'也不能输出符号'!'。若要输出'!',则需要'停用延迟环境变量扩充',命令为:SetLocal DisableDelayedExpansion。
使用此文件来编译工程有以下几点需要注意:
工程路径包括文件名中不能含有空格;
所要编译的文件只能是同一类型的文件,如都是C文件,或者都是ASM文件;
-
Automake.cmd文件的内容如下:
@echo off
@rem 本批处理可自动编译PROJECT目录下(包括子目录)下的.C文件,并生成OUTPUT文件
@rem 本文件由HomeWay编写,潮风工作室, 2012/2/10
@rem 环境变量定义
@rem 请根据本机情况修改以下变量
PATH=D:KEIL4C51BIN;%PATH%
SET C51INC=D:KEIL4C51INC
SET C51LIB=D:KEIL4C51LIB
@rem 工程所在目录
SET PROJECT=D:51
@rem 输出文件
SET OUTPUT=D:5151.hex
@rem 枚举所有.C文件并编译
set OBJ=
SetLocal EnableDelayedExpansion
for /r '%PROJECT%' %%i in (*.c) do (
set OBJ=!OBJ!%%i,
%rem compile the project files
C51 %%i
IF ERRORLEVEL 2 GOTO :FAILED
IF ERRORLEVEL 3 GOTO :FAILED
)
%rem 链接所有OBJECT文件
echo LINK:%OBJ:.c=.obj%%C51LIB%C51S.lib
BL51 %OBJ:.c=.obj%%C51LIB%C51S.lib TO %OUTPUT:.hex=% RAMSIZE(256)
IF ERRORLEVEL 2 GOTO :FAILED
IF ERRORLEVEL 3 GOTO :FAILED
%rem 生成HEX文件
OH51 %OUTPUT:.hex=% HEXFILE(%OUTPUT%)
goto :SUCCESS
:FAILED
echo 编译失败!
exit 1
:SUCCESS
%rem 清除所有的临时文件
del %OUTPUT:.hex=%
for /r '%PROJECT%' %%i in (*.obj) do del %%i
for /r '%PROJECT%' %%i in (*.lst) do del %%i
for /r '%PROJECT%' %%i in (*.m51) do del %%i
echo 编译成功!输出文件为:%OUTPUT%
exit 0
相关文章









