我正在尝试迁移我一直致力于使用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目录中使用.c
或gcc
生成每个clang
文件的依赖项。
我似乎无法找到如何编写Rakefile来编译C项目的任何示例。有没有人有链接或一些建议来帮助我开始?
编辑:我有一个临时的Rakefile,可以完成我希望它最终完成的一些任务。我想检测是否安装了clang并使用clang或gcc。这是我当前的Rakefile https://github.com/Rostepher/spoticli/blob/master/Rakefile
答案 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构建更好的选择。