Skip to content

Linking CXX shared library libtest_common.dylib Undefined symbols for architecture arm64

Steps to reproduce

List what commands you ran, any errors you see. If you run commands over some input, attaching the input to the issue will help us track down the bug.

mkdir build
cd build
cmake .. \
  -DCMAKE_C_COMPILER=/usr/bin/clang \
  -DCMAKE_C_FLAGS="-O2 -ftime-trace -mcpu=apple-m3" \
  -DCMAKE_CXX_COMPILER=/usr/bin/c++ \
  -DCMAKE_CXX_FLAGS="-O2 -ftime-trace -mcpu=apple-m3" \
  -DCMAKE_INSTALL_PREFIX=/Users/alex/graphviz/local-install \
  -DBUILD_SHARED_LIBS=ON \
  -Dwith_digcola=ON \
  -Dwith_ipsepcola=ON \
  -Dwith_ortho=ON \
  -Dwith_sfdp=ON \
  -Duse_win_pre_inst_libs=ON \
  -Dwith_cxx_tests=ON

then type 

make

...

Expected Behaviour

Fill in with what you expected to see.

It should not have linking error

Actual Behaviour

Show any unexpected output

[ 82%] Building CXX object tests/CMakeFiles/test_common.dir/test_edge_node_overlap_utilities.cpp.o
[ 82%] Linking CXX shared library libtest_common.dylib
Undefined symbols for architecture arm64:
  "Catch::MessageInfo::MessageInfo(Catch::StringRef, Catch::SourceLineInfo const&, Catch::ResultWas::OfType)", referenced from:
      Catch::MessageBuilder::MessageBuilder(Catch::StringRef, Catch::SourceLineInfo const&, Catch::ResultWas::OfType) in test_edge_node_overlap_utilities.cpp.o
  "Catch::StringMaker<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, void>::convert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> Catch::Detail::stringify<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in svg_analyzer.cpp.o
  "Catch::StringMaker<double, void>::convert(double)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> Catch::Detail::stringify<double>(double const&) in test_edge_node_overlap_utilities.cpp.o
  "Catch::StringMaker<int, void>::convert(int)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> Catch::Detail::stringify<int>(int const&) in test_edge_node_overlap_utilities.cpp.o
  "Catch::StringMaker<unsigned long, void>::convert(unsigned long)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> Catch::Detail::stringify<unsigned long>(unsigned long const&) in svg_analyzer.cpp.o

OS Version

Windows/macOS/Linux/BSD? What version?

  • MacOS 15.5

Graphviz Version

I was building from source

commit 17f189bc

Additional info

I was able to build it if I did not turn on tests. But I do want to run tests since I will try to optimize the code.