Компиляция CMockery имя неизвестного типа "jmp_buf" - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь добавить фреймворк модульного тестирования cMockery в мой C-проект.Я скачал и установил cMockery в глобальный путь включения.Но после #include <cmockery.h> в моем исходном файле cmake выдает следующую проблему.Похоже, то же самое будет сгенерировано, если я тоже использую cMocka.Я пропускаю некоторые пакеты?

Редактировать: поиск Google для "/usr/include/google/cmockery.h:365:8: error: unknown type name ‘jmp_buf’" дал ровно 0 результатов (теперь 1 результат указывает на этот вопрос).А также поиск unknown type name 'jmp_buf' только объясняет, что это такое.Не то, как это исправить или почему это происходит внутри cmockery.

/usr/bin/cmake --build /home/.../data-structures-c/cmake-build-debug --target data_structures_c -- -j 3
Scanning dependencies of target data_structures_c
[ 50%] Building C object CMakeFiles/data_structures_c.dir/main.c.o
In file included from /home/.../data-structures-c/main.c:3:
/usr/include/google/cmockery.h:365:8: error: unknown type name ‘jmp_buf’
 extern jmp_buf global_expect_assert_env;
        ^~~~~~~
make[3]: *** [CMakeFiles/data_structures_c.dir/build.make:63: CMakeFiles/data_structures_c.dir/main.c.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:73: CMakeFiles/data_structures_c.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/data_structures_c.dir/rule] Error 2
make: *** [Makefile:118: data_structures_c] Error 2

ОС: Manjaro Archlinux

Cmake, make, gcc, g ++ все установлено.

Мой CMakeList.txt также очень стандартный, минимальный с одним источником c

cmake_minimum_required(VERSION 3.12)
project(data_structures_c C)
set(CMAKE_C_STANDARD 99)
add_executable(data_structures_c main.c)

Я хотел бы знать, как решить эту проблему, чтобы скомпилировать мой код.

1 Ответ

2 голосов
/ 11 апреля 2019

Согласно комментариям в начале google / cmockery.h header:

/*
 * These headers or their equivalents should be included prior to including
 * this header file.
 *
 * #include <stdarg.h>
 * #include <stddef.h>
 * #include <setjmp.h>
 *
 * This allows test applications to use custom definitions of C standard
 * library functions and types.
 */

До , включая этот заголовок, необходимо включить следующие заголовки:

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>

Только после того, как они включены, допускается

#include <google/cmockery.h>
...