CMAKE Boost Unit Test Framework не работает на Mac - PullRequest
0 голосов
/ 03 февраля 2019

Среда буст-теста не будет работать на моей машине.Я много гуглил, но все ответы, кажется, обводят кругами, но не решают проблему.Я попытался переключиться на #define BOOST_TEST_DYN_LINK, но это просто вызывает еще одну порцию ошибок, и я не вижу никаких современных ответов, предлагающих использовать этот подход.

Следующая строка работает нормально, и я могу запускать тесты безПроблема:

#include <boost/test/include/unit_test.hpp>

Все проблемы начинаются, когда я пытаюсь перейти к:

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

BOOST_AUTO_TEST_CASE( something_test)
{
    BOOST_TEST(true);
    BOOST_TEST(2+2 == 4);
    BOOST_CHECK(2+3 == 6);
}

мой файл CMAKE выглядит так:

cmake_minimum_required(VERSION 3.13)
project(BoostTestsWork)

set(CMAKE_CXX_STANDARD 17)
find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
if(NOT Boost_FOUND)
    message(FATAL_ERROR "Could not find boost!")
endif()
message("File System: " ${Boost_FILESYSTEM_LIBRARY})
message("System Library: " ${Boost_SYSTEM_LIBRARY})
message("Unit test framework: " ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
message("Boost Library Dir: " ${Boost_LIBRARY_DIRS})
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIRS})
add_executable(BoostTestsWork library.cpp)
target_link_libraries(BoostTestsWork   ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_SYSTEM_LIBRARY}
    ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
    ${Boost_LIBRARIES})

Вывод, который я получаюэто:

CMAKE:
    -- Boost version: 1.67.0
-- Found the following Boost libraries:
--   system
--   filesystem
--   unit_test_framework
File System: /usr/local/boost_1_67_0/stage/lib/libboost_filesystem.dylib
System Library: /usr/local/boost_1_67_0/stage/lib/libboost_system.dylib
Unit test framework: /usr/local/boost_1_67_0/stage/lib/libboost_unit_test_framework.dylib
Boost Library Dir: /usr/local/boost_1_67_0/stage/lib
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/davidespley/CLionProjects/BoostTestsWork/cmake-build-debug

и компиляция:

====================[ Build | all | Debug ]=====================================
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/davidespley/CLionProjects/BoostTestsWork/cmake-build-debug --target all -- -j 6
[ 50%] Building CXX object CMakeFiles/BoostTestsWork.dir/library.cpp.o
[100%] Linking CXX executable BoostTestsWork
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [BoostTestsWork] Error 1
make[1]: *** [CMakeFiles/BoostTestsWork.dir/all] Error 2
make: *** [all] Error 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...