我对TDD有点陌生,虽然我已经使用C了一段时间。因此,我使用ceedling来测试我的嵌入式项目。
我可以在gcc的rake test:all,但我现在试图移动到一个嵌入式目标模拟器。我正在通过'project.yml‘文件指定我的交叉编译器、链接器等。
当我rake test:all时,当“编译cmock.c”(其他几个文件编译时没有问题)时会出现一个错误:
< path_to_cmock >/cmock.c:17:31:错误:数组'CMock_Guts_Buffer‘的大小太大了
在这之后还有其他的错误,但这是一个启动他们的错误。
当我去cmock.c时,我会在文件的顶部看到以下内容:
#ifdef CMOCK_MEM_DYNAMIC
static unsigned char* CMock_Guts_Buffer = NULL;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_ALIGN_SIZE;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr;
#else
static unsigned char CMock_Guts_Buffer[CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE];
static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr;
#endif太好了,所以我只需要找出这些声明的位置。我做了个短信搜索,结果发现它们没有在任何地方声明.因此,我怀疑它们来自于割让内部的违约。
我找到了CMOCK的文档,在“编译选项”下,
许多#defines也存在用于自定义cmock体验.
它接着列出了我在源代码中找到的#定义,但是它没有说明在哪里找到它们。我尝试使用适当的定义创建一个包含文件,并在没有运气的情况下通过'project.yml‘传递包含文件。
我怀疑答案是难以置信的简单,只是没有概述我搜索过的任何地方。谢谢您抽时间见我,
发布于 2016-05-06 18:11:09
当然,答案是盯着我的脸。
在“project.yml”文件中,有一个称为“定义”的部分。默认定义为:
:defines:
# in order to add common defines:
# 1) remove the trailing [] from the :common: section
# 2) add entries to the :common: section (e.g. :test: has TEST defined)
:commmon: &common_defines []
:test:
- *common_defines
- TEST
:test_preprocess:
- *common_defines
- TEST我只是为我的目标添加了定义:
:defines:
# in order to add common defines:
# 1) remove the trailing [] from the :common: section
# 2) add entries to the :common: section (e.g. :test: has TEST defined)
:commmon: &common_defines
- __dsPIC33EP32MC204__
- UNITY_INT_WIDTH=16
- CMOCK_MEM_INDEX_TYPE=uint16_t
- CMOCK_MEM_PTR_AS_INT=uint16_t
- CMOCK_MEM_ALIGN=1
- CMOCK_MEM_SIZE=1024
- CMOCK_MEM_STATIC
:test:
- *common_defines
- TEST
:test_preprocess:
- *common_defines
- TESThttps://stackoverflow.com/questions/37078332
复制相似问题