facontidavide / PlotJuggler

The Time Series Visualization Tool that you deserve.
https://www.plotjuggler.io
Mozilla Public License 2.0
4.48k stars 627 forks source link

Compile problem with macOS 14.4.1: error: only virtual member functions can be marked 'override' const std::string& message) override; #961

Open RENyunfan opened 8 months ago

RENyunfan commented 8 months ago

Problem description

Following #947, I still cannot compile plotjuggler on Mac with macOS 14.4.1 and Apple M3 chip. Need help.

image
[ 92%] Built target ProtobufParser_autogen
[ 93%] Building CXX object plotjuggler_plugins/ParserProtobuf/CMakeFiles/ProtobufParser.dir/ProtobufParser_autogen/mocs_compilation.cpp.o
In file included from /Users/renyunfan/Documents/plotjuggler_ws/build/PlotJuggler/plotjuggler_plugins/ParserProtobuf/ProtobufParser_autogen/mocs_compilation.cpp:2:
In file included from /Users/renyunfan/Documents/plotjuggler_ws/build/PlotJuggler/plotjuggler_plugins/ParserProtobuf/ProtobufParser_autogen/EWIEGA46WW/moc_protobuf_factory.cpp:10:
In file included from /Users/renyunfan/Documents/plotjuggler_ws/build/PlotJuggler/plotjuggler_plugins/ParserProtobuf/ProtobufParser_autogen/EWIEGA46WW/../../../../../../src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/protobuf_factory.h:6:
In file included from /Users/renyunfan/Documents/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/protobuf_parser.h:12:
/Users/renyunfan/Documents/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/error_collectors.h:13:45: error: only virtual member functions can be marked 'override'
                const std::string& message) override;
                                            ^~~~~~~~
/Users/renyunfan/Documents/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/error_collectors.h:16:47: error: only virtual member functions can be marked 'override'
                  const std::string& message) override;
                                              ^~~~~~~~
/Users/renyunfan/Documents/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/error_collectors.h:31:45: error: only virtual member functions can be marked 'override'
                const std::string& message) override;
                                            ^~~~~~~~
/Users/renyunfan/Documents/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserProtobuf/error_collectors.h:34:47: error: only virtual member functions can be marked 'override'
                  const std::string& message) override;
                                              ^~~~~~~~
4 errors generated.
make[2]: *** [plotjuggler_plugins/ParserProtobuf/CMakeFiles/ProtobufParser.dir/ProtobufParser_autogen/mocs_compilation.cpp.o] Error 1
make[1]: *** [plotjuggler_plugins/ParserProtobuf/CMakeFiles/ProtobufParser.dir/all] Error 2
make: *** [all] Error 2
tonygon commented 7 months ago

Same here. I could only get all the way to this point with the comments from https://github.com/facontidavide/PlotJuggler/issues/947, following the discussion here https://github.com/facontidavide/PlotJuggler/pull/950/files

When are those changes going to be merged?

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,18 @@ if(VCPKG_TOOLCHAIN)
     message(STATUS "BUILDING_WITH_VCPKG")
 endif()

+# Include PkgConfig module
+find_package(PkgConfig REQUIRED)
+
+# Use pkg_check_modules to find ZeroMQ
+pkg_check_modules(ZEROMQ REQUIRED IMPORTED_TARGET libzmq)
+
+# Include ZeroMQ directories
+include_directories(${ZEROMQ_INCLUDE_DIRS})
+# -------
+
 find_package(ament_cmake QUIET)
 find_package(catkin QUIET)

Thanks!

syundo0730 commented 7 months ago

I could build it using an older version of protobuf.

brew install protobuf@21
brew link protobuf@21 --overwrite
TalGlantz commented 6 months ago

Still having issues compiling. I modified the files based on: https://github.com/facontidavide/PlotJuggler/pull/950/files updates.

Tried to compile and got same error. What am I missing?

image

lgkimjy commented 5 months ago

@TalGlantz, I have the same issue. Could you let me know if you solved this compile error?

glebv commented 5 months ago

I had the same issue, I used recipe from here https://github.com/facontidavide/PlotJuggler/issues/961#issuecomment-2068415634 but I had to add path to protobuf and mosquitto. It's not a fully correct solution but it solved my issue

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 16477dd3..a240e057 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,16 @@ if(VCPKG_TOOLCHAIN)
     message(STATUS "BUILDING_WITH_VCPKG")
 endif()

+
+# Include PkgConfig module
+find_package(PkgConfig REQUIRED)
+
+# Use pkg_check_modules to find ZeroMQ
+pkg_check_modules(ZEROMQ REQUIRED IMPORTED_TARGET libzmq)
+
+# Include ZeroMQ directories
+include_directories(${ZEROMQ_INCLUDE_DIRS})
+
 find_package(ament_cmake QUIET)
 find_package(catkin QUIET)

@@ -103,6 +113,8 @@ if(APPLE AND EXISTS /usr/local/opt/qt5)
     set(CMAKE_MACOSX_RPATH 1)
 elseif(APPLE AND EXISTS /opt/homebrew/opt/qt@5)
     list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt@5")
+    list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/protobuf@21")
+    list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/mosquitto")
     set(CMAKE_MACOSX_RPATH 1)
 endif()
ksm-dg commented 1 week ago

I'm on macOS 15.1 (Sequoia) and FWIW, I couldn't compile completely with either the latest protobuf or protobuf@21. If I uninstall all protobuf versions and make the changes here (or removing ZMQ from CMakeLists.txt) I can compile. That's fine for me because I don't need protobuf for now, but presumably this won't work for everyone.

Per the pending pull request that fixes building on Mac, some code changes are actually needed to remove the override errors reported: https://github.com/facontidavide/PlotJuggler/pull/1019/commits/7657fb56944b7dc14d037008192ac7f920feb90d#diff-f7cae0d361d127176e8a7c1887d71ef4043b24be0fb36ea7545a2545ae04c71b. The CI run for that same commit built successfully, but without protobuf, so I take it that protobuf isn't essential.