#embedded #bazel #bazel-rules #cmocka
Вопрос:
Я использую cmocka с Bazel и хочу импортировать библиотеку cmocka в свои тестовые файлы (для встроенного кода на c), такие как <cmocka.h>, но я всегда получаю: cmocka.h: Такого файла или каталога нет.
мое телосложение такое:
cc_library(
name = "mock",
srcs = ["mock_i2c.c"],
deps = [":src"],
visibility = ["//visibility:public"],
linkstatic = True,
copts = ["-I test/cmocka/include"],
)
Ответ №1:
Для этого случая существует атрибут includes, также вам необходимо добавить свои заголовки в hdrs
атрибут:
cc_library(
name = "mock",
srcs = ["mock_i2c.c"],
deps = [":src"],
hdrs = glob(["test/cmocka/include/**/*.h"]),
visibility = ["//visibility:public"],
linkstatic = True,
includes= ["test/cmocka/include"],
)
Комментарии:
1. потому что я работаю в дирекции src, а моя cmocka находится в дирекции тестов.
2. Вам нужно добавить также
hdrs
атрибут, я обновил ответ. Если это не работает, то, пожалуйста, покажите топологию вашего проекта, потому что трудно угадать решение3. —src: привет.c Сборка —тест: тест.c Сборка cmoka: включает: cmocka.h
4. в домашнем директоре есть тест и src. В src: mock_i2c.c и сборка. В тесте: сборка test.c и cmocka.
5. Создайте отдельную библиотеку для cmocka
cc_library(name="cmocka", hdrs=["cmocka.h"], includes=["."])
вtest/cmocka/BUILD
файле, затем добавьте эту библиотеку в качестве зависимости кmock
целевой