This is just to let know people if they come back here how to workaround the problem.
You should get an error like this:
make[2]: *** [CMakeFiles/tf.dir/build.make:118: CMakeFiles/tf.dir/src/transform_listener.cpp.o] Error 1
In file included from /usr/include/log4cxx/log4cxx.h:45,
from /usr/include/log4cxx/logstring.h:28,
from /usr/include/log4cxx/level.h:22,
from /opt/ros/noetic/include/ros/console.h:46,
from /opt/ros/noetic/include/ros/ros.h:40,
from /tmp/makepkg/ros-noetic-tf/src/geometry-1.13.2/tf/src/transform_broadcaster.cpp:34:
/usr/include/log4cxx/boost-std-configuration.h:10:18: error: ‘shared_mutex’ in namespace ‘std’ does not name a type
10 | typedef std::shared_mutex shared_mutex;
| ^~~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:10:13: note: ‘std::shared_mutex’ is only available from C++17 onwards
10 | typedef std::shared_mutex shared_mutex;
| ^~~
/usr/include/log4cxx/boost-std-configuration.h:12:30: error: ‘shared_lock’ in namespace ‘std’ does not name a template type
12 | using shared_lock = std::shared_lock<T>;
| ^~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:12:25: note: ‘std::shared_lock’ is only available from C++14 onwards
12 | using shared_lock = std::shared_lock<T>;
| ^~~
In file included from /opt/ros/noetic/include/ros/console.h:46,
from /opt/ros/noetic/include/ros/ros.h:40,
from /tmp/makepkg/ros-noetic-tf/src/geometry-1.13.2/tf/src/transform_broadcaster.cpp:34:
/usr/include/log4cxx/level.h:283:29: error: ‘mutex’ in namespace ‘std’ does not name a type
283 | static std::mutex initMutex;
| ^~~~~
/usr/include/log4cxx/level.h:25:1: note: ‘std::mutex’ is defined in header ‘<mutex>’; did you forget to ‘#include <mutex>’?
24 | #include <log4cxx/helpers/object.h>
+++ |+#include <mutex>
25 |
My google-fu managed to find this same error in the archlinux repository: https://bugs.archlinux.org/task/71847
Their proposed solution is to modify /usr/include/log4cxx/boost-std-configuration.h, from this:
Which it works
Also according to the tracker, this should be resolved upstream, but I guess the build hasn't made it to the arch repository yet, so this should be a temporary fix and should be fixed whenever the log4cxx is updated.
This is just to let know people if they come back here how to workaround the problem.
You should get an error like this:
My google-fu managed to find this same error in the archlinux repository: https://bugs.archlinux.org/task/71847 Their proposed solution is to modify
/usr/include/log4cxx/boost-std-configuration.h
, from this:to this:
Which it works Also according to the tracker, this should be resolved upstream, but I guess the build hasn't made it to the arch repository yet, so this should be a temporary fix and should be fixed whenever the log4cxx is updated.