我使用Throw The Switch's Ceedling / Unity / CMock combo作为单元测试框架,在C中编写项目的单元测试。
我遇到了一个有趣的困境,我在我的一个单元测试中使用mqueue.h
。当测试编译时,我得到mq_open()
,mq_close()
等的gcc链接器未定义的引用错误。
根据我的理解,based on this finding -lrt标志需要在gcc命令的末尾 - 在列出源(和可执行文件?)gcc test_foo.c -lrt
之后。不幸的是,编写ceedling是为了在命令gcc -lrt test_foo.c
之后立即放置标志,我无法找到改变顺序的方法。
Ceedling提供的文档仅介绍如何向gcc命令添加标志,而不是如何更改顺序。我曾尝试过使用Ceedling的庞大源代码,但它是用Ruby编写的,我对此并不熟悉。
所以我的问题是:
答案 0 :(得分:0)
近3年后,出现了类似的问题。他们在https://github.com/ThrowTheSwitch/Ceedling/issues/136中添加了此功能,但是从文档中仍然很难理解其用法。我需要包括数学库(命令末尾需要'-lm'标志),并以以下配置节(特别是 system 部分)结束:
:libraries:
:placement: :end
:flag: "${1} " # or "-L ${1}" for example
:common: &common_libraries []
:system:
- -lm
:test:
- *common_libraries
:release:
- *common_libraries
出于某种原因,ceedle在添加到commons或特定的build部分时根本没有添加标记。