如何使用带有Keil uVision4(MDK-ARM)的构建服务器,编写构建脚本,使用Makefile?


13

我想运行每日构建,或签入/提交基于Keil MDK-ARM的项目的触发构建。到目前为止,我已经使用了IDE的批处理文件功能。但这也需要你来构建项目至少一次使用IDE,然后检查,在批处理文件和关联.__i,并._ia通过在IDE中创建的文件。

此外,IDE将许多特定于用户的内容放入批处理文件中,例如Windows PATH变量。这对于多个开发人员可能会成为问题,因为用于构建的批处理文件可以在来自不同开发人员的每次提交时更改。

最终,只需要跟踪armccarmasmArmLink的各种开关即可

有没有办法使用更标准的makefile来构建Keil uVision项目?有没有一种方法可以将uVision项目文件转换为更易于维护的构建脚本?


我认为您正在实施构建服务器真是太好了。不幸的是,我没有使用Keil开发系统的经验,因此我无法真正为您提供帮助。如果您解决了问题,我想鼓励您发布解决方案。
semaj 2011年

我通过批处理脚本构建了Kei​​l项目,而没有任何PATH依赖项(除了Keil工具本身)或__i / _ia文件。您可以分享更多有关此的信息吗?
Digikata 2011年

1
@digikata我正在使用IDE中的选项来生成批处理文件。在Keil的文档中对此进行了描述 还有一个命令行驱动的方法来描述这里,但我难以得到从命令控制台输出正确的。第二种方法开始一个新的过程,并为您提供了将输出窗口复制到输出文件的选项-对于构建服务器来说不是一个好方法。
rmaVT 2011年

供以后参考,该问题的范围是我们与其他Stack Exchange站点共有的重叠区域。在这里绝对欢迎有关嵌入式专用工具链(例如Keil)的问题!在Stack Overflow上也欢迎他们,但随时可以在任何地方询问。
凯文·维米尔

1
@KevinVermeer-是的,我本人也要说同样的话。在rmaVT上,您可能会发现浏览SO上标记为“ keil”问题与EE SE上标记为“ keil”问题一样具有教育意义。
大卫

Answers:


8

这是我最近想到的最好的方法:

在构建选项中,选择创建批处理文件。

当您从IDE启动构建时,将基于IDE中设置的选项创建批处理文件以及几个文本文件。您需要在源代码管理中跟踪这些IDE生成的文件:

  • *。蝙蝠
  • * .ini
  • *。__一世
  • * ._ ia
  • * .lnp
  • * .sct

然后可以从构建脚本启动foo.bat。

如果您要从生成的批处理文件中可靠地进行构建,虽然这确实会创建需要在源代码管理中进行跟踪的其他文件,但确实不需要依赖Keil项目文件(foo.uvproj)和IDE。我发现比较生成的包含编译器标志的文本文件(* .__ i)的差异,从而跟踪更改比.uvproj文件更容易。此外,批处理文件直接调用各种工具armasm,armcc,armlink。这为您提供了每个步骤的直接输出,以及在将来如有必要的情况下,将项目迁移到其他工具链的潜力更大。

我意识到这个答案听起来很像我的原始问题,但是我真的不知道使用Keil工具运行脚本构建的更好方法。我问看看别人可能会发生什么。我并不完全不同意@digikata的回答,但我更喜欢以更简单的格式使用编译器标志和内存映射来进行跟踪,并使用更多的unix风格的工具进行编译,而不是启动多合一编译与IDE。我认为从IDE进行的多合一编译在我的工作站上可以很好地工作,但不适用于构建服务器。

编辑:构建服务器在Windows Server 2003上运行。我必须承认,我已经同意使用IDE命令行界面而不是批处理文件。这变得太难管理了。


有关这项工作的问题-构建服务器正在运行什么操作系统?Linux,Windows 7,Windows Server 2003,Windows Server 2008?
2012年

感谢您回答问题!根据Keil的文档,arm工具链似乎可以在Windows Server 2003和2008 R2 上运行。有关您的编辑的后续问题:如何处理uvproj文件的更改(例如,将新文件添加到项目中进行编译)?您是否必须手动更改升级到构建服务器的文件中的编译选项?
CrimsonX '02

您必须将.uvproj文件置于源代码控制下。尽管尽管也生成了.userxxxxx文件,但文件中仍然保留了一些用户首选项,因此效果很好。构建服务器只需要打开相同的“项目”并进行构建。
rmaVT '02

3

我通过命令行调用Keil IDE,以从Makefile内构建(而不是生成的批处理文件)。通常,通过scm锁定项目文件,或者在执行此操作时重命名相关项目名称的参考构建副本,效果更好。

IDE非常乐意使用只读项目文件,因此,如果将它们锁定,则很烦人的是,您需要解锁它们才能更改设置,保存并重新签入。在项目中,这点很小,甚至是可取的。

如果您使用参考副本,则随着项目设置的更改(尤其是在从编译中添加或删除项目文件时),构建往往会中断。明确捕获这些更改不一定很糟糕,但这是维护构建所需要的额外步骤。

无论哪种方式,通过“ -o”选项将输出重定向到日志文件都可以访问完整的输出日志。日志不会一次出现,但是似乎全部都存在。(我实际上将Keil错误格式解析为GNU fmt以与Eclipse CDT环境集成。这使我在构建后可以直接跳转到错误/警告)

命令行构建还会生成__i,__ ia文件,因此这些文件也不需要进入构建服务器的版本控制。

希望这可以帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.