Rake构建一个C应用程序

时间:2014-07-02 04:15:54

标签: c ruby rake

我正在尝试迁移我一直致力于使用GNU Make的Rake insead的C应用程序。文件树类似于:

project
├── LICENSE.md
├── Makefile
├── Rakefile
├── README.md
└── src
    ├── debug.h
    ├── main.c
    ├── queue.c
    ├── queue.h
    └── ui
        ├── ui.c
        └── ui.h

我想在单独的build目录中构建每个文件,并在deps目录中使用.cgcc生成每个clang文件的依赖项。

我似乎无法找到如何编写Rakefile来编译C项目的任何示例。有没有人有链接或一些建议来帮助我开始?

编辑:我有一个临时的Rakefile,可以完成我希望它最终完成的一些任务。我想检测是否安装了clang并使用clang或gcc。

这是我当前的Rakefile https://github.com/Rostepher/spoticli/blob/master/Rakefile

2 个答案:

答案 0 :(得分:4)

使用Ceedling!

https://github.com/ThrowTheSwitch/Ceedling

它是C的自动化单元测试框架,但在简单构建方面也做得很好。您应该能够通过编辑YAML配置文件来获得您想要的内容,并且您将获得用于构建开箱即用的Rake任务。当然,您也可以创建自己的自定义Rake任务。

作为奖励,您可以使用CMock创建模拟和使用Unity进行自动单元测试。

从gem中安装非常容易:

> gem install ceedling

答案 1 :(得分:0)

如果您正在尝试生成本机扩展,以便可以将Ruby接口编译为C代码,这是一个不同的问题,但我认为您正在寻找的是如何从rake中使用mkmf。虽然你可以把rake文件简单地转换成像C项目的make一样,但是像mkmf这样的工具已经为你做了很多额外的工作。看一眼: http://ruby-doc.org/stdlib-2.0.0/libdoc/mkmf/rdoc/MakeMakefile.html

基本上你只需要传递mkmf所需的参数,它就会为你生成一个makefile并运行它。这里的文档说它是用于构建扩展,但是如果你没有编写任何不相关的扩展代码,它将像原始makefile一样编译你的代码。

作为旁注:如果您正在寻找更具动态性的制作工具或动态生成makefile的工具,CMake将是一个比组合hackish rake构建更好的选择。