Настройка 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, с которым я незнаком.
Итак, мои вопросы:
- Действительно ли размещение -lrt влияет на связывание mq_*()
- Любые мысли о том, как изменить размещение флага -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 вообще не добавлял флаги при добавлении в общие или определенные разделы сборки.