【问题标题】:Rake to build a C applicationRake 构建一个 C 应用程序
【发布时间】:2015-10-06 13:39:15
【问题描述】:

我正在尝试迁移我一直在开发的 C 应用程序,以使用 GNU Make 中的 Rake。文件树类似于:

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

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

我似乎找不到任何关于如何编写 Rakefile 来编译 C 项目的示例。有没有人有链接或一些建议可以帮助我入门?

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

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

【问题讨论】:

标签: c ruby rake


【解决方案1】:

使用 Ceedling!

https://github.com/ThrowTheSwitch/Ceedling

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

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

从 gem 安装非常容易:

> gem install ceedling

【讨论】:

    【解决方案2】:

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

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

    附带说明:如果您正在寻找更动态的 make 工具或动态生成 makefile 的工具,CMake 将是比将 hackish rake 构建放在一起更好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多