Настройка ceedling с помощью mqueue.h и -lrt

Я пишу модульные тесты для проекта на C, используя комбинацию Cellling / Unity / CMock от Throw The Switch в качестве основы для модульного тестирования.

Я столкнулся с интересной дилеммой, где я использую mqueue.h в одном из моих модульных тестов. Когда тесты компилируются, я получаю gcc linker неопределенные ошибки ссылок для mq_open(), mq_close(), так далее..

Насколько я понимаю, исходя из этого, флаг -lrt должен идти в конце команды gcc - после перечисления источников (и исполняемых файлов?) gcc test_foo.c -lrt, К сожалению, ceedling написано, чтобы поставить флаг сразу после команды: gcc -lrt test_foo.c и я не могу найти способ изменить порядок.

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

Итак, мои вопросы:

  1. Действительно ли размещение -lrt влияет на связывание mq_*()
  2. Любые мысли о том, как изменить размещение флага -lrt?

0 ответов

Почти 3 года спустя возникла аналогичная проблема. Они добавили эту функцию в https://github.com/ThrowTheSwitch/Ceedling/issues/136, но использование по-прежнему непросто понять из документации. Мне нужно было включить математическую библиотеку (требуется флаг '-lm' в конце команды), и в итоге получился следующий раздел конфигурации (особенно системная часть):

:libraries:
    :placement: :end
        :flag: "${1} "  # or "-L ${1}" for example
        :common: &common_libraries []
    :system:
         - -lm
    :test:
        - *common_libraries
    :release:
        - *common_libraries

По какой-то причине ceedling вообще не добавлял флаги при добавлении в общие или определенные разделы сборки.

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