私はしばらくの間 C を使用してきましたが、TDD にはやや慣れていません。その結果、ceedling を使用して組み込みプロジェクトをテストしています。
私はrake test:all
gccでできますが、それを組み込みターゲットシミュレーターに移動しようとしています。「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
完璧なので、これらが宣言されている場所を見つけるだけです。どこにも宣言されていないことを見つけるためだけにテキスト検索を行います...したがって、ceedling内のデフォルトから来ていると思われます。
CMOCKのドキュメントを見つけ、「コンパイル済みオプション」の下に、
cmock エクスペリエンスをカスタマイズするための #define も多数存在します...
ソース コードで見つけた #defines をリストしますが、それらを見つける場所は示していません。適切な定義を使用してインクルード ファイルを作成し、そのインクルード ファイルを「project.yml」に渡そうとしましたが、うまくいきませんでした。
答えは信じられないほど単純だと思います。私が検索したどこにも概説されていないだけです。お時間をいただきありがとうございます。