simpleapples

重装过100次XP,打过10年红警。

不要将LiteIDE的项目文件夹命名为go

| 评论

在LiteIDE中编写Go语言程序中,使用Ctrl+R编译运行,Console中每次都输出一样的内容,即使代码改了,也还是最初代码的内容,也就是说新的代码压根没有被编译。

一开始怀疑是LiteIDE的问题,于是重启LiteIDE甚至是重启系统,不过重启后问题依旧。在其他位置新建项目后,能够正常编译执行,而当我把在其他地方创建的源文件拷贝到之前项目位置后,又出现了不能编译的问题。

于是到项目文件夹里找问题,猛然发现编译出的可执行文件名竟然是go.exe!原来这就是问题所在。

Alt text

解决问题之前首先需要了解一下LiteIDE在编译执行过程中做了什么。

第一步:调用go build编译源文件,并以项目名称为可执行文件名称输出

第二步:执行输出的可执行文件

问题主要出在LiteIDE将编译的可执行文件和项目文件夹同名,而我之前所建立的项目文件夹的名字刚好是go,当文件第二次编译时,LiteIDE调用的go程序实际上就成了刚才编译出的程序,导致即使代码改变,程序也还是根据最早的代码编译出来的。

既然问题找到了,那么下面说说解决方法:

  1. LiteIDE应该通过完整路径调用go build命令,例如C:/go/bin/go.exe build
  2. LiteIDE应该在编译之前删除之前编译好的文件
  3. 不要将项目文件夹命名为go

前面两项都是LiteIDE层面的改进方法,而最后一项是在LiteIDE改进之前避免这种问题的方法。

评论