pirdoll 发表于 2014-3-14 10:38:49

VC6+VAX编译KeilC51程序的方法 实现代码自动补全

本帖最后由 pirdoll 于 2014-3-14 10:44 编辑

前言:
闲来无事,在下面两个帖子的基础上鼓捣出了多文件KeilC51的VC6编译方法。

http://www.amobbs.com/thread-4080638-1-1.html
http://www.openedv.com/posts/list/0/10273.htm

试过使用UltraEdit,但是发现它的自动完成功能有这样一个文件:对于同一个项目里面不同文件之间的函数,比如在main.c中调用了xxx.h中定义的一个函数fun,那么在编辑main.c时代码自动补全功能没法识别到xxx.h中的fun函数,智能识别到main.c文件中的函数或变量。是需要设置哪些选项吗,还是ue就不支持这个功能?

首先使用keil新建工程并进行必要的配置,Output选项卡选中Create Batch File,Build工程。



VC6中,Tools→Customize,Tools选项卡,增加新的命令Build_C51,Command选择刚才生成的BAT文件,Initial directory选择$(CurDir)\..,这个和工程的文件夹结构有关,我是在keil的工程文件夹下再建一个VC6文件夹,里面放VC6的项目文件,所以调用BAT编译命令时的初始路径就是当前路径的上一级路径,选中Use Output Window。





添加好后,在Tools中出现Build_C51命令,其序号是8,然后添加它到工具栏Tools→Customize,Toolbars选项卡,新建一个,我叫Plugin,Command选项卡,目录选择Tools,然后拖动8号工具到IDE的工具栏上就行了。
      




该方法仅限于项目文件大致确定,修改bug的阶段,否则需要修改BAT文件,而且无法实现双击错误定位的功能。
附BAT文件:
SET C51INC=D:\Keil\C51\INC\
SET C51LIB=D:\Keil\C51\LIB
SET CPU_TYPE=STC12LE5A60S2
SET CPU_VENDOR=STC12LE5A16S2 Series
SET UV2_TARGET=FPL
SET CPU_XTAL=0x01518000
"D:\Keil\C51\BIN\C51.EXE" @.\output\uart.__i
"D:\Keil\C51\BIN\C51.EXE" @.\output\iic.__i
"D:\Keil\C51\BIN\C51.EXE" @.\output\rtc.__i
"D:\Keil\C51\BIN\C51.EXE" @.\output\voice.__i
"D:\Keil\C51\BIN\A51.EXE" @.\output\STARTUP._ia
"D:\Keil\C51\BIN\C51.EXE" @.\output\delay.__i
"D:\Keil\C51\BIN\C51.EXE" @.\output\as602.__i
"D:\Keil\C51\BIN\C51.EXE" @.\output\main.__i
"D:\Keil\C51\BIN\BL51.EXE" @.\output\FPL.lnp
"D:\Keil\C51\BIN\OH51.EXE" ".\output\FPL"

four_zhg 发表于 2014-3-14 11:06:07

不错,可以试一下了

nongxiaoming 发表于 2014-3-14 11:18:16

正在使用vs2012+armcc编译+jlink下载的飘过,感觉其他ide在vs面前弱爆了

error_dan 发表于 2014-3-14 11:26:45

nongxiaoming 发表于 2014-3-14 11:18
正在使用vs2012+armcc编译+jlink下载的飘过,感觉其他ide在vs面前弱爆了

装B用的express版的VS不支持插件真是...
而且折腾起来太麻烦了,就放弃了,反正现在MDK的代码补全也能将就着用...
顺便你Jlink的下载是自己写的脚本实现的吗?

68336016 发表于 2014-3-14 11:31:39

我是怎么简单怎么来,VS里面只要把KEIL相关的头文件库文件加入include,lib中就行了。
同时打开VS和KEIL,一个写代码,一个编译,爽得一塌糊涂。
尤其是修改程序的时候,变量名,函数名,宏什么的,一处修改,全部搞定。
还能自动生成函数声明,函数注释。

mypear 发表于 2014-3-14 11:46:50

怎么不用Source Insight+keil

nongxiaoming 发表于 2014-3-14 12:36:03

error_dan 发表于 2014-3-14 11:26
装B用的express版的VS不支持插件真是...
而且折腾起来太麻烦了,就放弃了,反正现在MDK的代码补全也能将就 ...

装旗舰版呀,而且VS2012或2013都不需要VAX插件了的,自带的代码补全已经超越VAX,简直和C#差不多。jlink下载是用的外部脚本,armcc编译也是用的外部SCONS构建,支持gcc和armcc,编译错误信息输出到输出栏,现在错误信息定位还只是能定位到文件,还没能定位到具体哪行。这是比较遗憾的。

error_dan 发表于 2014-3-14 13:09:05

nongxiaoming 发表于 2014-3-14 12:36
装旗舰版呀,而且VS2012或2013都不需要VAX插件了的,自带的代码补全已经超越VAX,简直和C#差不多。jlink ...

伦家的vs2012 express是正版滴哦(废话,免费的当然用正版了),看到SCONS就大概知道是怎么弄的,我还以为是用vs的工程管理建工程的呢,那样的话倒是可以实现更native的debug,但是怎么对armcc输出命令行就太麻烦了,RTT这套东西确实非常给力丫~
就是不知道学习成本怎么样,不用RTT的话,自己构建一个工程麻烦不麻烦~而且还有再学习一门语言的压力~

justdomyself 发表于 2014-3-14 13:56:32

68336016 发表于 2014-3-14 11:31
我是怎么简单怎么来,VS里面只要把KEIL相关的头文件库文件加入include,lib中就行了。
同时打开VS和KEIL,一 ...

求教程~~~~

Excellence 发表于 2014-3-14 14:19:36

SI+KEIL.


         

pirdoll 发表于 2014-3-14 16:02:47

Excellence 发表于 2014-3-14 14:19
SI+KEIL.

si编辑,keil编译吗?

angler12 发表于 2014-3-15 18:22:06

SI+KEIL +1

bi大痣 发表于 2014-3-16 22:16:58

额,看的有点晕!keil用的蛮好的啊?为啥要用其他软件来编译呢?

pirdoll 发表于 2014-3-16 22:39:18

bi大痣 发表于 2014-3-16 22:16
额,看的有点晕!keil用的蛮好的啊?为啥要用其他软件来编译呢?

我已经尽量写的够详细的步骤了,看来表述能力还有待进一步加强。
keilC51没有代码自动补全功能,用过VC6+VAX就知道了,当然如果你盲打能力特别强就另当别论了。

Excellence 发表于 2014-3-17 08:06:04

pirdoll 发表于 2014-3-14 16:02
si编辑,keil编译吗?

是的。。。。

Excellence 发表于 2014-3-17 08:07:13

pirdoll 发表于 2014-3-14 16:02
si编辑,keil编译吗?

工具害死人,有时间多看看C语言书吧,还有很多数据结构,各种开源的源代码。

那个顺手用那个。

hmzwm 发表于 2014-3-22 22:11:08

长见识了,还可以这样用VC
页: [1]
查看完整版本: VC6+VAX编译KeilC51程序的方法 实现代码自动补全