2015-04-30 3 views
3

Я использую CLI JetBrain и пытаюсь запустить несколько тестов повышения, но они не будут. Вот мой код:Boost.Tests где точка входа?

#define BOOST_TEST_MAIN 1 
#define BOOST_TEST_MODULE ! 
#include <boost/test/unit_test.hpp> 
#include <iostream> 

BOOST_AUTO_TEST_CASE(MyTest) { 
    BOOST_CHECK(false); 
} 


int main() { 
    std::cout << "in main!" << std::endl; 
    return 0; 
} 

и мой CMake файл:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
set(SOURCE_FILES main.cpp) 
set(BOOST_ROOT /home/vitalii/Downloads/boost_1_57_0) 
find_package(Boost 1.57 COMPONENTS unit_test_framework REQUIRED) 
add_executable(justForFun ${SOURCE_FILES}) 
if (Boost_FOUND) 
    include_directories(${Boost_INCLUDE_DIRS}) 
    link_directories(${Boost_LIBRARY_DIRS}) 
    target_link_libraries(justForFun ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) 
else() 
    message(FATAL "Boost not found") 
endif() 
enable_testing() 

Проблема заключается в том, что выход Виль быть только "в главном меню". И тест не запускается. Я понял, что мне не нужна «основная» функция. Он должен быть создан автоматически. Но если я удалю его, я получу следующие ошибки:

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: error: ld returned 1 exit status 

Может кто-то мне помочь?

+1

Правильно ли подключен Boost (см. [This] (http://stackoverflow.com/questions/13767699/boost-test-undefined-reference-errors))? Или [this] (http://stackoverflow.com/questions/7781374/boost-test-linking) поможет вам? – TobiMcNamobi

+0

@TobiMcNamobi спасибо, на самом деле. Я добавил 'ADD_DEFINITIONS (-DBOOST_TEST_DYN_LINK)' как во второй ссылке, и он сработал. Также он работает, если я пишу '#include ' insted из '#include '. Не могли бы вы объяснить, почему? Если вы опубликуете свой комментарий в качестве ответа, я буду отмечать его как принятый. Благодаря! –

+0

Поиск «boost/test/included» при условии [это] (http://www.boost.org/doc/libs/1_43_0/libs/test/doc/html/utf/user-guide/usage-variants/ single-header-variant.html) (среди прочих). – TobiMcNamobi

ответ

0

Вы писали

#define BOOST_TEST_MODULE ! 

В примерах, которые я нашел BOOST_TEST_MODULE определяется как некоторый действительный идентификатор, например,

#define BOOST_TEST_MODULE MyModule 

Это работает и в моем проекте. Если вы определите свою собственную функцию main(), я думаю, что BOOST_TEST_MODULE не используется вообще, что объясняет ваш результат.

Дополнительная информация находится по адресу here.

+0

Спасибо за ответ. Но я изменил 'BOOST_TEST_MODULE' на MyModule и не определил' main() 'и все еще получал 'неопределенную ссылку на' main' –

Смежные вопросы