Cmockeryを使用した単体テストを、手作りの Makefile として使用する既存のビルド環境に追加する必要があります。したがって、cmockery.c を (automake なしで) ビルドする方法を理解する必要があります。
私が実行すると:
g++ -DHAVE_CONFIG_H -DPIC -I ../cmockery-0.1.2 -I /usr/include/malloc -c ../cmockery-0.1.2/cmockery.c -o obj/cmockery.o
次のようなエラーの長いリストが表示されます。
../cmockery-0.1.2/cmockery.c: In function ‘void initialize_source_location(SourceLocation*)’:
../cmockery-0.1.2/cmockery.c:248: error: cast from ‘SourceLocation*’ to ‘int’ loses precision
cmockery.c の 247:248 行目は次のとおりです。
static void initialize_source_location(SourceLocation * const location) {
assert_true(location);
assert_true
cmockery.h の 154 行目で定義されています。
#define assert_true(c) _assert_true((int)(c), #c, __FILE__, __LINE__)
したがって、(エラー状態として) 問題は、GCC が「SourceLocation*」から「int」へのキャストを好まないことです。
./configure
and を使用してCmockery をビルドできますmake
(最初に Linuxを使用した場合、Mac OS Xを使用した場合export CFLAGS=-I/usr/include/malloc
)、エラーは発生しません。実行時に cmockery.c をコンパイルするコマンドラインを調べてみましたmake
(後./configure
):
gcc -DHAVE_CONFIG_H -I. -I. -I./src -I./src -Isrc/google -I/usr/include/malloc -MT libcmockery_la-cmockery.lo -MD -MP -MF .deps/libcmockery_la-cmockery.Tpo -c src/cmockery.c -fno-common -DPIC -o .libs/libcmockery_la-cmockery.o
...しかし、このエラーを回避するオプションはありません。
「エラー: 'void*' から 'int' へのキャストで精度が失われました」では(int)
、cmockery.h を(intptr_t)
. そして、私はそれが機能することを確認しました。しかし、Cmockery は./configure
andmake
でビルドできるので、ソースを変更せずにビルドする方法が必要です。