【问题标题】:How does one add a custom build step to an automake-based project in KDevelop?如何在 KDevelop 中为基于 automake 的项目添加自定义构建步骤?
【发布时间】:2008-09-20 04:57:02
【问题描述】:

我最近开始使用 C++ 和 KDevelop 进行个人编码项目。虽然我一开始只是随便乱搞,但我认为从长远来看,如果我在走得太远之前建立一个合适的单元测试套件会更好。我已经创建了一个单独的测试运行程序可执行文件作为子项目,并且我添加到其中的测试似乎运行正常。到目前为止,成功。

但是,我真的很想在每次构建时都运行单元测试,而不仅仅是在我明确运行它们时。当我将我造成的混乱分解为便利库时尤其如此,每个便利库都可能有自己的测试可执行文件。与其手动运行它们,不如让它们作为构建过程的最后一步运行。我查看了项目菜单和 automake 管理器中的所有选项,但不知道如何设置。

我想这可以通过手动编辑生成文件来完成。不幸的是,我的 makefile-fu 有点弱,而且我还担心下次我通过 IDE 更改某些内容时,KDevelop 可能会覆盖我手动所做的任何更改。因此,如果可以选择如何通过 KDevelop 本身执行此操作,我更愿意采用这种方式。

有人知道我如何让 KDevelop 在构建过程中运行我的测试可执行文件吗?谢谢!

(我不是 100% 依赖 KDevelop。如果 KDevelop 不能做到这一点,或者如果有一个 IDE 可以让这变得更容易,我可能会被说服切换。)

【问题讨论】:

    标签: unit-testing automake kdevelop


    【解决方案1】:

    尽管您可以操纵默认的 `make` 目标来运行您的测试, 一般不推荐,因为每次调用

    制作

    将运行所有测试。 您应该改用“检查”目标, 这是软件包中公认的准标准。 通过这样做, 测试仅在您运行时开始

    检查

    然后,您可以轻松配置 KDevelop 运行“make check”而不仅仅是“make”。

    由于您使用的是 automake(通过 KDevelop), 您不需要自己编写“检查”目标。 相反,只需编辑您的“Makefile.am”并设置一些变量:

    测试 = ...

    请看一下 automake documentation, "Support for test suites" 了解更多信息。

    【讨论】:

      【解决方案2】:

      我是这样工作的:

      $ cat src/base64.c
      //code to be tested
      int encode64(...) { ... }
      
      #ifdef UNITTEST
      #include <assert.h>
      int main(int argc, char* argv[])
      {
        assert( encode64(...) == 0 );
        return 0;
      }
      #endif //UNITTEST
      /* end file.c */
      
      $ cat src/Makefile.am
      ...
      check_PROGRAMS = base64-test
      base64_test_SOURCES = base64.c
      base64_test_CPPFLAGS = -I../include -DUNITTEST
      TESTS = base64-test
      

      make check 会构建 src/base64-test 并运行它:

      $ make check
      ...
      PASS: base64-test
      ==================
      All 1 tests passed
      ==================
      ...
      

      现在我正在尝试将其全部封装为一个 m4 宏,以便像这样使用:

      MAKE_UNITTEST(base64.c)
      

      应该会产生类似于上述解决方案的结果。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多