Skip to content

Does not build the tests with WITH_STL=CXX17 #3102

@t-b

Description

@t-b

Linux: debian bookworm, GCC 12.2.0

With

git clean -fdx build

cmake -S . -B build                    \
  -DBUILD_TESTING=ON                   \
  -DWITH_EXAMPLES=OFF                  \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo    \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DBUILD_SHARED_LIBS=ON               \
  -DWITH_OTLP_GRPC=ON                  \
  -DWITH_OTLP_HTTP=ON                  \
  -DWITH_ABSEIL=ON                     \
  -DWITH_BENCHMARK=OFF                 \
  -DCMAKE_CXX_STANDARD=17              \
  -DWITH_STL=CXX17

cmake --build build --target install

I get

/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `typeinfo for testing::internal::UntypedFunctionMockerBase'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::Log(testing::internal::LogSeverity, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::~UntypedFunctionMockerBase()'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::SetOwnerAndName(void const*, char const*)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ReportUninterestingCall(testing::internal::CallReaction, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::GetFailureReporter()'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ExpectationBase::AllPrerequisitesAreSatisfied() const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ExpectationBase::FindUnsatisfiedPrerequisites(testing::ExpectationSet*) const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::Name() const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::Mock::UnregisterLocked(testing::internal::UntypedFunctionMockerBase*)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ExpectationBase::CheckActionCountIfNotDone() const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::IllegalDoDefault(char const*, int)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::Mock::GetReactionOnUninterestingCalls(void const*)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ExpectationBase::RetireAllPreRequisites()'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::MockObject() const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::ExpectationBase::DescribeCallCountTo(std::ostream*) const'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked()'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::LogIsVisible(testing::internal::LogSeverity)'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::g_gmock_mutex'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::internal::UntypedFunctionMockerBase::UntypedFunctionMockerBase()'
/usr/bin/ld: ../../test_common/src/http/client/nosend/libopentelemetry_http_client_nosend.so: undefined reference to `testing::Expectation::~Expectation()'
collect2: error: ld returned 1 exit status
gmake[2]: *** [exporters/otlp/CMakeFiles/otlp_http_exporter_test.dir/build.make:125: exporters/otlp/otlp_http_exporter_test] Fehler 1
gmake[1]: *** [CMakeFiles/Makefile2:5466: exporters/otlp/CMakeFiles/otlp_http_exporter_test.dir/all] Fehler 2
gmake: *** [Makefile:146: all] Fehler 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions