cucumber / cucumber-cpp

Support for writing Cucumber step definitions in C++
MIT License
306 stars 131 forks source link

error: cannot allocate an object of abstract type ‘cucumber::internal::CukeBoostLogInterceptor’ #233

Closed RCoeurjoly closed 4 years ago

RCoeurjoly commented 4 years ago

Summary

error: cannot allocate an object of abstract type ‘cucumber::internal::CukeBoostLogInterceptor’

Expected Behavior

[100%] OK

Current Behavior

[ 1%] Performing update step for 'gtest' [ 1%] Performing configure step for 'gtest' -- gtest configure command succeeded. See also /home/drcoeurjoly/cucumber-cpp/build/gmock/src/gtest-stamp/gtest-configure-.log [ 2%] Performing build step for 'gtest' -- gtest build command succeeded. See also /home/drcoeurjoly/cucumber-cpp/build/gmock/src/gtest-stamp/gtest-build-.log [ 3%] No install step for 'gtest' [ 4%] Completed 'gtest' [ 6%] Built target gtest [ 6%] Performing update step for 'gmock' [ 7%] Performing configure step for 'gmock' -- gmock configure command succeeded. See also /home/drcoeurjoly/cucumber-cpp/build/gmock/src/gmock-stamp/gmock-configure-.log [ 7%] Performing build step for 'gmock' -- gmock build command succeeded. See also /home/drcoeurjoly/cucumber-cpp/build/gmock/src/gmock-stamp/gmock-build-.log [ 7%] No install step for 'gmock' [ 8%] Completed 'gmock' [ 11%] Built target gmock [ 12%] Building CXX object src/CMakeFiles/cucumber-cpp.dir/drivers/BoostDriver.cpp.o /home/drcoeurjoly/cucumber-cpp/src/drivers/BoostDriver.cpp: In static member function ‘static void cucumber::internal::BoostStep::initBoostTest()’: /home/drcoeurjoly/cucumber-cpp/src/drivers/BoostDriver.cpp:122:26: error: cannot allocate an object of abstract type ‘cucumber::internal::CukeBoostLogInterceptor’ logInterceptor = new CukeBoostLogInterceptor; ^ /home/drcoeurjoly/cucumber-cpp/src/drivers/BoostDriver.cpp:45:7: note: because the following virtual functions are pure within ‘cucumber::internal::CukeBoostLogInterceptor’: class CukeBoostLogInterceptor : public ::boost::unit_test::unit_test_log_formatter { ^ In file included from /home/drcoeurjoly/cucumber-cpp/src/drivers/BoostDriver.cpp:9:0: /usr/local/boost-1.71.0/include/boost/test/unit_test_log_formatter.hpp:144:25: note: virtual void boost::unit_test::unit_test_log_formatter::log_build_info(std::ostream&, bool) virtual void log_build_info( std::ostream& os, bool log_build_info = true ) = 0; ^ gmake[2]: [src/CMakeFiles/cucumber-cpp.dir/drivers/BoostDriver.cpp.o] Error 1 gmake[1]: [src/CMakeFiles/cucumber-cpp.dir/all] Error 2 gmake: *** [all] Error 2

Possible Solution

Steps to Reproduce (for bugs)

cmake --build build

Context & Motivation

Cannot build cucumber-cpp

Your Environment

Output of cmake -E chdir build cmake -DCUKE_ENABLE_EXAMPLES=on -DCMAKE_INSTALL_PREFIX=${prefix} ..

-- Boost 1.46 found. -- Found Boost components: unit_test_framework -- Boost 1.46 found. -- Found Boost components: thread;system;regex;date_time;program_options;filesystem -- Downloading GMock / GTest version 1.7.0 from git -- Found Qt version: 5.9.7 -- C++11 is needed from Qt version 5.7.0, building with c++11 enabled -- Boost 1.34 found. -- Adding ContextHandlingTest -- Adding HookRegistrationTest -- Adding StepRegistrationTest -- Adding TaggedHookRegistrationTest -- Adding WireServerTest -- Adding WireProtocolTest -- Adding BasicStepTest -- Adding ContextManagerTest -- Adding CukeCommandsTest -- Adding RegexTest -- Adding StepCallChainTest -- Adding StepManagerTest -- Adding TableTest -- Adding TagTest -- Adding GTestDriverTest -- Adding BoostDriverTest -- Adding QtTestDriverTest -- Adding GenericDriverTest -- Found Cucumber -- Configuring done -- Generating done -- Build files have been written to: /home/drcoeurjoly/cucumber-cpp/build

cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)

cmake --version cmake3 version 3.14.6

cucumber --version 2.0.0

ruby --version ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

RCoeurjoly commented 4 years ago

Versions 1.71 and 1.72 are incompatible. I removed them and installed 1.67 and everything worked.