Мне нужно добавить модульные тесты, используя 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
Вот строки 247: 248 файла cmockery.c:
static void initialize_source_location(SourceLocation * const location) {
assert_true(location);
assert_true
определяется в строке 154 файла cmockery.h:
#define assert_true(c) _assert_true((int)(c), #c, __FILE__, __LINE__)
Таким образом, проблема (из-за ошибки) в том, что GCC не нравится приведение из «SourceLocation *» к «int».
Я могу собрать Cmockery, используя ./configure
и 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
... но я не вижу вариантов, которые могли бы обойти эту ошибку.
В " error: приведение от 'void *' к 'int' теряет точность ", я вижу, что я мог бы изменить (int)
в cmockery.h на (intptr_t)
. И я подтвердил, что работает. Но так как я могу собрать Cmockery с ./configure
и make
, должен быть способ собрать его без изменения исходного кода.