5

私はしばらくの間 C を使用してきましたが、TDD にはやや慣れていません。その結果、ceedling を使用して組み込みプロジェクトをテストしています。

私はrake test:allgccでできますが、それを組み込みターゲットシミュレーターに移動しようとしています。「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」に渡そうとしましたが、うまくいきませんでした。

答えは信じられないほど単純だと思います。私が検索したどこにも概説されていないだけです。お時間をいただきありがとうございます。

4

2 に答える 2

7

もちろん、答えは私の顔を見つめていました。

「project.yml」ファイルには、「defines」というセクションがあります。デフォルトの定義は次のとおりです。

: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
    - TEST
于 2016-05-06T18:11:09.337 に答える