Я хочу предоставить свою собственную основную функцию при использовании Boost.Test. Поэтому я включил следующие макросы:Boost.Test - проблемы с переопределением основных
#define BOOST_TEST_ALTERNATIVE_INIT_API
#define BOOST_TEST_NO_MAIN
В моей главной функции У меня есть вызов:
::boost::unit_test::unit_test_main(®istering_all_tests, argc, argv)
, но это дает мне следующую ошибку, когда сборка на OS X с помощью Xcode 6:
Undefined symbols for architecture x86_64:
"boost::unit_test::unit_test_main(bool (*)(), int, char**)", referenced from:
_main in main.o
я узнал, что в том числе следующий файл:
#include <boost/test/included/unit_test.hpp>
решает эту проблему, но я смущен о последствиях. В описании этого файла указано, что он использует включенную (или связанную) версию модульной системы тестирования.
подпиточного руководство по началу работы утверждает, что:
Boost.Test может быть использован в «заголовок-только» или режим «отдельно составленный», хотя отдельный сборник рекомендуется для серьезного использования.
Я построил библиотеку отдельно.
подпиточного документ также утверждает:
В том числе UTF непосредственно в модуль
тест Если вы хотите, чтобы избежать отдельной библиотеки компиляции вы можете либо включать в себя все файлы, которые представляют собой статическую библиотеку в ваш файл makefile или включите их как часть исходного файла тестового модуля . Чтобы облегчить более поздний вариант, UTF представляет вариант использования одного заголовка . В любом случае в настройках вашей компиляции необязательных опций сборки или макроопределений не требуется. Но в этом случае применимы те же флаги, которые могут использоваться для автономной библиотеки . Хотя, , очевидно, ни BOOST_TEST_DYN_LINK, ни BOOST_TEST_NO_LIB не являются . Это решение может быть не лучшим выбором в долгосрочной перспективе, , так как для перекомпиляции источников UTF для каждого тестового модуля вы используете его с каждой заменой тестового модуля, который вы работаете . В результате ваше время цикла тестирования может увеличиться. Если стало утомительным, я рекомендую переключиться на одно из вариантов использования библиотеки .
Похоже, что, включив включенную (по сравнению с) версию модульной системы испытаний, я ошибаюсь.
Может кто-то прояснить правильный подход. В примерах переопределения основной информации не упоминается необходимость этого.