Unfortunately, I got the error when linking. Some info is shown below.
Environment: Ubuntu 22.04 WSL version on Windows 11 21H2.
icy@icy-laptop:~/High-LevelPuzzle/build$ make -j 16
[ 3%] Built target glad
[ 32%] Built target glfw
[ 45%] Built target imgui
[ 49%] Built target imguizmo
[ 54%] Built target 3DRenderlib
[ 96%] Built target 3DCorelib
[ 98%] Linking CXX executable ../bin/High-LevelPuzzle_bin
/usr/bin/ld: lib3DRenderlib.a(libigl_Render.cpp.o): in function `libigl_Render::DrawSmoothPuzzle(igl::opengl::glfw::Viewer&, std::vector<Eigen::Matrix<double, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<double, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<int, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<int, -1, -1, 0, -1, -1> > >, int, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >)':
libigl_Render.cpp:(.text+0x145a): undefined reference to `MeshObject::CreateSmoothPuzzle(std::vector<Eigen::Matrix<double, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<double, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<int, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<int, -1, -1, 0, -1, -1> > >, int, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >)'
/usr/bin/ld: lib3DRenderlib.a(libigl_Render.cpp.o): in function `libigl_Render::DrawWorldAxes(igl::opengl::glfw::Viewer&, Eigen::Matrix<double, 3, 1, 0, 3, 1>, double, int)':
libigl_Render.cpp:(.text+0x1ec2): undefined reference to `MeshObject::CreateAxes(Eigen::Matrix<double, 3, 1, 0, 3, 1>, double, int)'
/usr/bin/ld: lib3DRenderlib.a(libigl_Render.cpp.o): in function `libigl_Render::DrawGround(igl::opengl::glfw::Viewer&, Eigen::Matrix<double, 3, 1, 0, 3, 1>, double, int, int)':
libigl_Render.cpp:(.text+0x27d2): undefined reference to `MeshObject::CreateGround(Eigen::Matrix<double, 3, 1, 0, 3, 1>, double, int, int)'
/usr/bin/ld: lib3DRenderlib.a(libigl_Render.cpp.o): in function `libigl_Render::DrawPuzzle(igl::opengl::glfw::Viewer&, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, float, float, int)':
libigl_Render.cpp:(.text+0x341a): undefined reference to `MeshObject::CreatePuzzle(std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, int)'
/usr/bin/ld: libigl_Render.cpp:(.text+0x3cca): undefined reference to `MeshObject::CreatePuzzleSkeleton(std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >, float, float, int)'
/usr/bin/ld: lib3DRenderlib.a(libigl_Render.cpp.o): in function `libigl_Render::RenderPuzzle(igl::opengl::glfw::Viewer&, Puzzle&, int)':
libigl_Render.cpp:(.text+0x4cb3): undefined reference to `Volume::GetVoxelSize()'
/usr/bin/ld: libigl_Render.cpp:(.text+0x4d52): undefined reference to `Volume::GetVoxelSize()'
/usr/bin/ld: libigl_Render.cpp:(.text+0x4e0a): undefined reference to `Puzzle::CreatePuzzleGeometry(std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >&, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >&, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >&, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >&, std::vector<Eigen::Matrix<float, -1, -1, 0, -1, -1>, std::allocator<Eigen::Matrix<float, -1, -1, 0, -1, -1> > >&, int)'
/usr/bin/ld: libigl_Render.cpp:(.text+0x566e): undefined reference to `Puzzle::GetPieceAssemblyPos(int)'
/usr/bin/ld: lib3DRenderlib.a(libigl_UI.cpp.o): in function `setViewerUI(igl::opengl::glfw::Viewer&)::{lambda()#2}::operator()() const':
libigl_UI.cpp:(.text+0x846): undefined reference to `Puzzle::ReadPuzzleFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x8b4): undefined reference to `Puzzle::ReadSmoothPuzzleFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x8d7): undefined reference to `Puzzle::CheckPuzzleState(bool, bool)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x94b): undefined reference to `PuzzleCreator::PuzzleCreator()'
/usr/bin/ld: libigl_UI.cpp:(.text+0x95a): undefined reference to `PuzzleCreator::InitPuzzleCreator(Volume*)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x97d): undefined reference to `PuzzleCreator::CreateBuildablePuzzle(int, int, bool, float)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x98f): undefined reference to `Puzzle::operator=(Puzzle const&)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x9c5): undefined reference to `Puzzle::CheckPuzzleState(bool, bool)'
/usr/bin/ld: libigl_UI.cpp:(.text+0x9e6): undefined reference to `PuzzleCreator::~PuzzleCreator()'
/usr/bin/ld: libigl_UI.cpp:(.text+0xbaf): undefined reference to `Puzzle::SavePuzzleFiles(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, float, bool)'
/usr/bin/ld: libigl_UI.cpp:(.text+0xd36): undefined reference to `PuzCreator_Iter::PuzCreator_Iter()'
/usr/bin/ld: libigl_UI.cpp:(.text+0xd41): undefined reference to `PuzCreator_Iter::InitPuzzleCreator_Iter(Puzzle*)'
/usr/bin/ld: libigl_UI.cpp:(.text+0xd5f): undefined reference to `PuzCreator_Iter::CreateBuildablePuzzle_Iter(int, float, float)'
/usr/bin/ld: libigl_UI.cpp:(.text+0xd6a): undefined reference to `Puzzle::operator=(Puzzle const&)'
/usr/bin/ld: libigl_UI.cpp:(.text+0xd7e): undefined reference to `Puzzle::CheckPuzzleState(bool, bool)'
/usr/bin/ld: libigl_UI.cpp:(.text+0xdc0): undefined reference to `PuzCreator_Iter::~PuzCreator_Iter()'
/usr/bin/ld: lib3DRenderlib.a(libigl_UI.cpp.o): in function `__static_initialization_and_destruction_0(int, int) [clone .constprop.0]':
libigl_UI.cpp:(.text.startup+0xb4e): undefined reference to `Puzzle::Puzzle()'
/usr/bin/ld: libigl_UI.cpp:(.text.startup+0xb58): undefined reference to `Puzzle::~Puzzle()'
/usr/bin/ld: libigl_UI.cpp:(.text.startup+0xb6b): undefined reference to `Puzzle::Puzzle()'
/usr/bin/ld: lib3DRenderlib.a(libigl_UI.cpp.o): in function `setViewerUI(igl::opengl::glfw::Viewer&)::{lambda()#2}::operator()() const [clone .cold]':
libigl_UI.cpp:(.text.unlikely+0x38): undefined reference to `PuzzleCreator::~PuzzleCreator()'
/usr/bin/ld: libigl_UI.cpp:(.text.unlikely+0x48): undefined reference to `PuzCreator_Iter::~PuzCreator_Iter()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/High-LevelPuzzle_bin.dir/build.make:112: ../bin/High-LevelPuzzle_bin] Error 1
make[1]: *** [CMakeFiles/Makefile2:263: CMakeFiles/High-LevelPuzzle_bin.dir/all] Error 2
make: *** [Makefile:91: all] Error 2