This is not my empirical evidence on Mac. I have compiled with internal KDL and I see no sign of the external one
Code: Select all
$ otool -L /Applications/FreeCAD.app/Contents/lib/Robot* | grep -i kdl
$
comes up empty. On the contrary I find all the stuff in the Robot libraries
Code: Select all
[...r/local/FreeCAD/build] nm -o /Applications/FreeCAD.app/Contents/lib/Robot* | grep 'Trajectory_Segment' | c++filt
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178350 T KDL::Trajectory_Segment::GetProfile()
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178330 T KDL::Trajectory_Segment::GetPath()
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177df0 T KDL::Trajectory_Segment::Trajectory_Segment(KDL::Path*, KDL::VelocityProfile*, bool)
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177f00 T KDL::Trajectory_Segment::Trajectory_Segment(KDL::Path*, KDL::VelocityProfile*, double, bool)
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177d90 T KDL::Trajectory_Segment::Trajectory_Segment(KDL::Path*, KDL::VelocityProfile*, bool)
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177e30 T KDL::Trajectory_Segment::Trajectory_Segment(KDL::Path*, KDL::VelocityProfile*, double, bool)
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178300 T KDL::Trajectory_Segment::~Trajectory_Segment()
/Applications/FreeCAD.app/Contents/lib/Robot.so: 00000000001782e0 T KDL::Trajectory_Segment::~Trajectory_Segment()
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178250 T KDL::Trajectory_Segment::~Trajectory_Segment()
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178080 T KDL::Trajectory_Segment::Acc(double) const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177f70 T KDL::Trajectory_Segment::Pos(double) const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177fe0 T KDL::Trajectory_Segment::Vel(double) const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178370 unsigned short KDL::Trajectory_Segment::Clone() const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000178140 T KDL::Trajectory_Segment::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 0000000000177f50 T KDL::Trajectory_Segment::Duration() const
/Applications/FreeCAD.app/Contents/lib/Robot.so: 00000000001de800 S typeinfo for KDL::Trajectory_Segment
/Applications/FreeCAD.app/Contents/lib/Robot.so: 00000000001c8de0 S typeinfo name for KDL::Trajectory_Segment
/Applications/FreeCAD.app/Contents/lib/Robot.so: 00000000001de7a0 S vtable for KDL::Trajectory_Segment
And everything works fine.
What bothers me is that when you build with the external KDL there are still files from the internal one that are compiled and (very possibly... I have to confirm) loaded and this probably creates a mess. When using the external KDL no files from the internal one should be compiled. But if the backward compatibility is broken I am afraid that we can only work with the internal one.