CMock - несколько определений

Я начинаю работать над тестированием C-разработки.

Я использовал CMock для генерации своих фиктивных классов, выполнив такие команды:

ruby cmock.rb ../../../src/util.h

Моя текущая структура пакета:

app/root
  | bin
      | *.*
  | build
      | *.*
  |- cmake
     |- modules
        |- CodeCoverage.cmake
  |- coverage
      |- *.*
  |- external
      |- Unity
      |- CMock
      |- CMakeLists.txt
  |- src
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- mocks
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- tests
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- CMakeLists.txt

У меня есть настройка CMakeLists.txt для компиляции src в виде библиотеки:

add_library(app SHARED ${SOURCE_FILES})

Tests настроен для компиляции как исполняемый файл:

add_executable(tests ${TEST_SOURCES})

target_link_libraries(tests app Unity mocks)

И mocks настроен для компиляции в виде библиотеки:

add_library(mocks ${MOCK_SOURCES})

target_link_libraries(mocks app Unity CMock)

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

Кто-нибудь может дать какое-нибудь руководство по поводу того, что неправильно в моей файловой структуре или стратегии?

1 ответ

Решение

Смотрите ответ здесь: https://github.com/ThrowTheSwitch/CMock/issues/97

По сути, все сводится к тому, чтобы связать только файлы, которые вам нужны для каждого теста. При использовании Unity каждый тест становится собственным исполняемым файлом.

Другие вопросы по тегам