zoukankan      html  css  js  c++  java
  • 让SlickEdit 自动编译Keil C51工程

    让SlickEdit 自动编译Keil C51工程

    吴宏伟 2012-2-10

     

    上一篇文章已经讲了如何手动调用Keil的C51编译器来编译我们的工程,今天跟大家说说如何在SlickEdit环境下配置编译命令。

    1. 首先新建一个SlickEdit工程

      假设工程路径为"D:\51",在Build System界面下选择第二个选项,

    配置 Build 命令的 Command Line为D:\51\automake.cmd,此文件内容下面将贴出来。

     

        

    这样便完成了配置过程。其实最核心的地方就在automake.cmd文件,下面将对此文件的关键内容做一些讲解。

    1. 关键内容讲解

      (1)变量声明:SET PROJECT=D:\51 声明PROJECT变量的值为D:\51,之后需要引用此变量时,需用%PROJECT%。

      (2) 变量值替换,格式为,%VAR:oldstr=newstr%, VAR为变量名,oldstr将替换成newstr;

          例:SET OUTPUT=D:\51\51.hex,则%OUTPUT:.hex=% 将为 D:\51\51,即把.hex替换成空字符串。

      (3)文件枚举,格式为:for /r "PATH" %%i in (*.c) do (….)

          /r表示搜索子目录,"PATH"为所要搜索的文件,*.c为所要搜索的类型。 Do 后面填写所要执行的操作。

      (4)for循环内的变量多次赋值:

      在for语句里面重复对同一变量多次赋值时才需要使用"!",并且在使用"!"调用变量时,要首先"启用延迟环境变量扩充",启动命令为:SetLocal EnableDelayedExpansion。另外需要说明的是,"启用延迟环境变量扩充"后,所有的"!"都将被视为"取变量值"的特殊符号,即使用"^!"也不能输出符号"!"。若要输出"!",则需要"停用延迟环境变量扩充",命令为:SetLocal DisableDelayedExpansion。

    2. 使用此文件来编译工程有以下几点需要注意:
      1. 工程路径包括文件名中不能含有空格;
      2. 所要编译的文件只能是同一类型的文件,如都是C文件,或者都是ASM文件;
    3. Automake.cmd文件的内容如下:

      @echo off

      @rem 本批处理可自动编译PROJECT目录下(包括子目录)下的.C文件,并生成OUTPUT文件

       

      @rem 本文件由HomeWay编写,潮风工作室, 2012/2/10

       

      @rem 环境变量定义

      @rem 请根据本机情况修改以下变量

      PATH=D:\KEIL4\C51\BIN;%PATH%

      SET C51INC=D:\KEIL4\C51\INC

      SET C51LIB=D:\KEIL4\C51\LIB

       

      @rem 工程所在目录

      SET PROJECT=D:\51

       

      @rem 输出文件

      SET OUTPUT=D:\51\51.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

       

      本文章的演示文件下载:https://files.cnblogs.com/chaofeng/51-Se-Demo.zip

  • 相关阅读:
    rsync安装配置实时同步
    ORA-00392: log 4 of thread 2 is being cleared, operation not allowed
    CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
    常见服务端口
    linux客户端传输文件到Windows本地
    windows/Linux主机重启NetBackup服务和后台进程
    linux命令之grep命令
    linux命令之awk命令
    Shiro安全框架
  • 原文地址:https://www.cnblogs.com/chaofeng/p/2346174.html
Copyright © 2011-2022 走看看