I'm building IO2D library [link removed].
I followed this tutorial [link removed] from the official documentation to build the library.
Building steps:
sudo apt update
sudo apt install build-essential
sudo apt install cmake
sudo apt install libcairo2-dev
sudo apt install libgraphicsmagick1-dev
sudo apt install libpng-dev
git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
cd P0267_RefImpl
mkdir Debug
cd Debug
cmake --config Debug "-DCMAKE_BUILD_TYPE=Debug" ..
cmake --build .
But I always get a huge error.
Here's my environment and the required packages:
$ cmake --version
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ dpkg -l | grep libcairo
ii libcairo-gobject-perl 1.005-2 amd64 integrate Cairo into the Glib type system in Perl
ii libcairo-gobject2:amd64 1.16.0-4ubuntu1 amd64 Cairo 2D vector graphics library (GObject library)
ii libcairo-perl 1.107-1 amd64 Perl interface to the Cairo graphics library
ii libcairo-script-interpreter2:amd64 1.16.0-4ubuntu1 amd64 Cairo 2D vector graphics library (script interpreter)
ii libcairo2:amd64 1.16.0-4ubuntu1 amd64 Cairo 2D vector graphics library
ii libcairo2-dev:amd64 1.16.0-4ubuntu1 amd64 Development files for the Cairo 2D graphics library
ii libcairomm-1.0-1v5:amd64 1.12.2-4build1 amd64 C++ wrappers for Cairo (shared libraries)
$ dpkg -l | grep libgraphicsmagick
ii libgraphicsmagick-q16-3 1.4+really1.3.35-1 amd64 format-independent image processing - C shared library
ii libgraphicsmagick1-dev 1.4+really1.3.35-1 amd64 format-independent image processing - C development files
$ dpkg -l | grep libpng
ii libpng-dev:amd64 1.6.37-2 amd64 PNG library - development (version 1.6)
ii libpng-tools 1.6.37-2 amd64 PNG library - tools (version 1.6)
ii libpng16-16:amd64 1.6.37-2 amd64 PNG library - runtime (version 1.6)
$ make --version
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
And here are the first few lines from the error I got (this is just a small part of it, but I can't put it all here because it's exceeding the character limit):
$ ls
appveyor.yml BUILDING.md cmake CMakeLists.txt CONSUMING.md Debug 'Design questions.md' LICENSE.md P0267_RefImpl README.md TODO.md
$ cd Debug/
$ cmake --config Debug "-DCMAKE_BUILD_TYPE=Debug" ..
-- The CXX compiler identification is GNU 9.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Default IO2D backend was not specified, choosing automatically...
Found Linux, using CAIRO_XLIB.
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Found Cairo: /usr/include/cairo (found version "1.16.0")
-- Checking for module 'GraphicsMagick'
-- Found GraphicsMagick, version 1.3.35
-- Found GraphicsMagick: /usr/include/GraphicsMagick
-- The C compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/Debug
$ cmake --build .
Scanning dependencies of target io2d_core
[ 1%] Building CXX object P0267_RefImpl/P0267_RefImpl/CMakeFiles/io2d_core.dir/rgba_color.cpp.o
[ 3%] Building CXX object P0267_RefImpl/P0267_RefImpl/CMakeFiles/io2d_core.dir/xinterchangebuffer.cpp.o
[ 5%] Linking CXX static library libio2d_core.a
[ 5%] Built target io2d_core
Scanning dependencies of target io2d_cairo
[ 7%] Building CXX object P0267_RefImpl/P0267_RefImpl/cairo/CMakeFiles/io2d_cairo.dir/cairo_renderer-graphicsmagickinit.cpp.o
[ 9%] Linking CXX static library libio2d_cairo.a
[ 9%] Built target io2d_cairo
Scanning dependencies of target io2d_cairo_xlib
[ 11%] Building CXX object P0267_RefImpl/P0267_RefImpl/cairo/xlib/CMakeFiles/io2d_cairo_xlib.dir/cairo_renderer_xlib.cpp.o
[ 12%] Linking CXX static library libio2d_cairo_xlib.a
[ 12%] Built target io2d_cairo_xlib
Scanning dependencies of target color_fill
[ 14%] Building CXX object P0267_RefImpl/Samples/color_fill/CMakeFiles/color_fill.dir/main.cpp.o
[ 16%] Linking CXX executable color_fill
[ 16%] Built target color_fill
Scanning dependencies of target cpu_load
[ 18%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/main.cpp.o
[ 20%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/data_source.cpp.o
[ 22%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/profiler_linux.cpp.o
[ 24%] Linking CXX executable cpu_load
[ 24%] Built target cpu_load
Scanning dependencies of target draw_cpp
[ 25%] Building CXX object P0267_RefImpl/Samples/draw_cpp/CMakeFiles/draw_cpp.dir/main.cpp.o
[ 27%] Linking CXX executable draw_cpp
[ 27%] Built target draw_cpp
Scanning dependencies of target life
[ 29%] Building CXX object P0267_RefImpl/Samples/life/CMakeFiles/life.dir/main.cpp.o
[ 31%] Linking CXX executable life
[ 31%] Built target life
Scanning dependencies of target pugixml
[ 33%] Building CXX object P0267_RefImpl/Samples/maps/external/pugixml/CMakeFiles/pugixml.dir/src/pugixml.cpp.o
[ 35%] Linking CXX static library libpugixml.a
[ 35%] Built target pugixml
Scanning dependencies of target maps
[ 37%] Building CXX object P0267_RefImpl/Samples/maps/CMakeFiles/maps.dir/main.cpp.o
[ 38%] Building CXX object P0267_RefImpl/Samples/maps/CMakeFiles/maps.dir/model.cpp.o
[ 40%] Building CXX object P0267_RefImpl/Samples/maps/CMakeFiles/maps.dir/render.cpp.o
[ 42%] Building CXX object P0267_RefImpl/Samples/maps/CMakeFiles/maps.dir/http.cpp.o
[ 44%] Linking CXX executable maps
[ 44%] Built target maps
Scanning dependencies of target rocks_in_space
[ 46%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Asteroid.cpp.o
[ 48%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Game.cpp.o
[ 50%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Input.cpp.o
[ 51%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Maths.cpp.o
[ 53%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Physics.cpp.o
[ 55%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Ship.cpp.o
[ 57%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/LinuxMain.cpp.o
[ 59%] Linking CXX executable rocks_in_space
[ 59%] Built target rocks_in_space
Scanning dependencies of target sprites
[ 61%] Building CXX object P0267_RefImpl/Samples/sprites/CMakeFiles/sprites.dir/main.cpp.o
[ 62%] Linking CXX executable sprites
[ 62%] Built target sprites
Scanning dependencies of target svg
[ 64%] Building CXX object P0267_RefImpl/Samples/svg/CMakeFiles/svg.dir/main.cpp.o
[ 66%] Building CXX object P0267_RefImpl/Samples/svg/CMakeFiles/svg.dir/svg.cpp.o
In file included from /home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/document_traversal.hpp:11,
from /home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/svgpp.hpp:1,
from /home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/svg.cpp:5:
/home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/attribute_dispatcher.hpp: In instantiation of ‘bool svgpp::detail::viewport_attribute_dispatcher<ElementTag, Context, Args>::on_exit_attributes() [with ElementTag = svgpp::tag::element::svg; Context = Canvas; Args = {svgpp::referencing_element<void>, svgpp::processed_elements<boost::mpl::set12<svgpp::tag::element::svg, svgpp::tag::element::g, svgpp::tag::element::use_, svgpp::tag::element::circle, svgpp::tag::element::ellipse, svgpp::tag::element::line, svgpp::tag::element::path, svgpp::tag::element::polygon, svgpp::tag::element::polyline, svgpp::tag::element::rect, svgpp::tag::element::linearGradient, svgpp::tag::element::stop> >, svgpp::processed_attributes<boost::mpl::s_item<svgpp::tag::attribute::x, boost::mpl::s_item<svgpp::tag::attribute::y, boost::mpl::s_item<svgpp::tag::attribute::width, boost::mpl::s_item<svgpp::tag::attribute::height, boost::mpl::s_item<svgpp::tag::attribute::viewBox, boost::mpl::s_item<svgpp::tag::attribute::preserveAspectRatio, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::path, svgpp::tag::attribute::d>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::x>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::y>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::width>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::height>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::r>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polyline, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polygon, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::use_, svgpp::tag::attribute::xlink::href>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_opacity>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_color>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::offset>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::id>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::gradientTransform>, boost::mpl::s_item<svgpp::tag::attribute::stroke_opacity, boost::mpl::s_item<svgpp::tag::attribute::fill_opacity, boost::mpl::s_item<svgpp::tag::attribute::opacity, boost::mpl::s_item<svgpp::tag::attribute::fill, boost::mpl::s_item<svgpp::tag::attribute::stroke_width, boost::mpl::s_item<svgpp::tag::attribute::stroke, boost::mpl::s_item<svgpp::tag::attribute::transform, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, svgpp::viewport_policy<svgpp::policy::viewport::as_transform>, svgpp::path_policy<PathPolicy>, svgpp::context_factories<ChildContextFactories>, svgpp::color_factory<svgpp::factory::color::percentage_adapter<ColorFactoryBase> >, svgpp::length_policy<svgpp::policy::length::forward_to_method<Canvas, const svgpp::factory::length::unitless<float, float, svgpp::tag::length_units::mm> > >, svgpp::attribute_traversal_policy<AttributeTraversal>}]’:
/home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/document_traversal.hpp:174:52: required from ‘static bool svgpp::document_traversal<Args>::load_attributes(const XMLElement&, Context&, ElementTag) [with ReferencingElement = void; XMLElement = const rapidxml_ns::xml_node<>*; Context = Canvas; ElementTag = svgpp::tag::element::svg; Args = {svgpp::processed_elements<boost::mpl::set12<svgpp::tag::element::svg, svgpp::tag::element::g, svgpp::tag::element::use_, svgpp::tag::element::circle, svgpp::tag::element::ellipse, svgpp::tag::element::line, svgpp::tag::element::path, svgpp::tag::element::polygon, svgpp::tag::element::polyline, svgpp::tag::element::rect, svgpp::tag::element::linearGradient, svgpp::tag::element::stop> >, svgpp::processed_attributes<boost::mpl::s_item<svgpp::tag::attribute::x, boost::mpl::s_item<svgpp::tag::attribute::y, boost::mpl::s_item<svgpp::tag::attribute::width, boost::mpl::s_item<svgpp::tag::attribute::height, boost::mpl::s_item<svgpp::tag::attribute::viewBox, boost::mpl::s_item<svgpp::tag::attribute::preserveAspectRatio, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::path, svgpp::tag::attribute::d>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::x>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::y>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::width>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::height>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::r>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polyline, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polygon, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::use_, svgpp::tag::attribute::xlink::href>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_opacity>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_color>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::offset>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::id>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::gradientTransform>, boost::mpl::s_item<svgpp::tag::attribute::stroke_opacity, boost::mpl::s_item<svgpp::tag::attribute::fill_opacity, boost::mpl::s_item<svgpp::tag::attribute::opacity, boost::mpl::s_item<svgpp::tag::attribute::fill, boost::mpl::s_item<svgpp::tag::attribute::stroke_width, boost::mpl::s_item<svgpp::tag::attribute::stroke, boost::mpl::s_item<svgpp::tag::attribute::transform, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, svgpp::viewport_policy<svgpp::policy::viewport::as_transform>, svgpp::path_policy<PathPolicy>, svgpp::context_factories<ChildContextFactories>, svgpp::color_factory<svgpp::factory::color::percentage_adapter<ColorFactoryBase> >, svgpp::length_policy<svgpp::policy::length::forward_to_method<Canvas, const svgpp::factory::length::unitless<float, float, svgpp::tag::length_units::mm> > >, svgpp::attribute_traversal_policy<AttributeTraversal>}]’
/home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/document_traversal.hpp:138:49: required from ‘static bool svgpp::document_traversal<Args>::load_element(const XMLElement&, Context&, ElementTag) [with ExpectedChildElements = boost::mpl::s_item<svgpp::tag::element::linearGradient, boost::mpl::s_item<svgpp::tag::element::radialGradient, boost::mpl::s_item<svgpp::tag::element::defs, boost::mpl::s_item<svgpp::tag::element::g, boost::mpl::s_item<svgpp::tag::element::svg, boost::mpl::s_item<svgpp::tag::element::symbol, boost::mpl::s_item<svgpp::tag::element::use_, boost::mpl::s_item<svgpp::tag::element::circle, boost::mpl::s_item<svgpp::tag::element::ellipse, boost::mpl::s_item<svgpp::tag::element::line, boost::mpl::s_item<svgpp::tag::element::path, boost::mpl::s_item<svgpp::tag::element::polygon, boost::mpl::s_item<svgpp::tag::element::polyline, boost::mpl::s_item<svgpp::tag::element::rect, boost::mpl::s_item<svgpp::tag::element::desc, boost::mpl::s_item<svgpp::tag::element::metadata, boost::mpl::s_item<svgpp::tag::element::title, boost::mpl::s_item<svgpp::tag::element::animate, boost::mpl::s_item<svgpp::tag::element::animateColor, boost::mpl::s_item<svgpp::tag::element::animateMotion, boost::mpl::s_item<svgpp::tag::element::animateTransform, boost::mpl::s_item<svgpp::tag::element::set, boost::mpl::s_item<svgpp::tag::element::view, boost::mpl::s_item<svgpp::tag::element::text, boost::mpl::s_item<svgpp::tag::element::switch_, boost::mpl::s_item<svgpp::tag::element::style, boost::mpl::s_item<svgpp::tag::element::script, boost::mpl::s_item<svgpp::tag::element::pattern, boost::mpl::s_item<svgpp::tag::element::mask, boost::mpl::s_item<svgpp::tag::element::marker, boost::mpl::s_item<svgpp::tag::element::image, boost::mpl::s_item<svgpp::tag::element::foreignObject, boost::mpl::s_item<svgpp::tag::element::font_face, boost::mpl::s_item<svgpp::tag::element::font, boost::mpl::s_item<svgpp::tag::element::filter, boost::mpl::s_item<svgpp::tag::element::cursor, boost::mpl::s_item<svgpp::tag::element::color_profile, boost::mpl::s_item<svgpp::tag::element::clipPath, boost::mpl::s_item<svgpp::tag::element::altGlyphDef, boost::mpl::s_item<svgpp::tag::element::a, boost::mpl::set0<> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >; ReferencingElement = void; XMLElement = const rapidxml_ns::xml_node<>*; Context = Canvas; ElementTag = svgpp::tag::element::svg; Args = {svgpp::processed_elements<boost::mpl::set12<svgpp::tag::element::svg, svgpp::tag::element::g, svgpp::tag::element::use_, svgpp::tag::element::circle, svgpp::tag::element::ellipse, svgpp::tag::element::line, svgpp::tag::element::path, svgpp::tag::element::polygon, svgpp::tag::element::polyline, svgpp::tag::element::rect, svgpp::tag::element::linearGradient, svgpp::tag::element::stop> >, svgpp::processed_attributes<boost::mpl::s_item<svgpp::tag::attribute::x, boost::mpl::s_item<svgpp::tag::attribute::y, boost::mpl::s_item<svgpp::tag::attribute::width, boost::mpl::s_item<svgpp::tag::attribute::height, boost::mpl::s_item<svgpp::tag::attribute::viewBox, boost::mpl::s_item<svgpp::tag::attribute::preserveAspectRatio, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::path, svgpp::tag::attribute::d>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::x>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::y>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::width>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::height>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::rect, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::circle, svgpp::tag::attribute::r>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::cy>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::rx>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::ellipse, svgpp::tag::attribute::ry>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polyline, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polygon, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::use_, svgpp::tag::attribute::xlink::href>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_opacity>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_color>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::offset>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::id>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::gradientTransform>, boost::mpl::s_item<svgpp::tag::attribute::stroke_opacity, boost::mpl::s_item<svgpp::tag::attribute::fill_opacity, boost::mpl::s_item<svgpp::tag::attribute::opacity, boost::mpl::s_item<svgpp::tag::attribute::fill, boost::mpl::s_item<svgpp::tag::attribute::stroke_width, boost::mpl::s_item<svgpp::tag::attribute::stroke, boost::mpl::s_item<svgpp::tag::attribute::transform, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, svgpp::viewport_policy<svgpp::policy::viewport::as_transform>, svgpp::path_policy<PathPolicy>, svgpp::context_factories<ChildContextFactories>, svgpp::color_factory<svgpp::factory::color::percentage_adapter<ColorFactoryBase> >, svgpp::length_policy<svgpp::policy::length::forward_to_method<Canvas, const svgpp::factory::length::unitless<float, float, svgpp::tag::length_units::mm> > >, svgpp::attribute_traversal_policy<AttributeTraversal>}]’
/home/eslam/CppND/Course 1, Foundations/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/document_traversal.hpp:118:12: required from ‘static bool svgpp::document_traversal<Args>::load_expected_element(const XMLElement&, Context&, ElementTag) [with XMLElement = const rapidxml_ns::xml_node<>*; Context = Canvas; ElementTag = svgpp::tag::element::svg; Args = {svgpp::processed_elements<boost::mpl::set12<svgpp:...
boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::line, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polyline, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::polygon, svgpp::tag::attribute::points>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::use_, svgpp::tag::attribute::xlink::href>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_opacity>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::stop_color>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::stop, svgpp::tag::attribute::offset>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::id>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x2>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::y1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::x1>, boost::mpl::s_item<boost::mpl::pair<svgpp::tag::element::linearGradient, svgpp::tag::attribute::gradientTransform>, boost::mpl::s_item<svgpp::tag::attribute::stroke_opacity, boost::mpl::s_item<svgpp::tag::attribute::fill_opacity, boost::mpl::s_item<svgpp::tag::attribute::opacity, boost::mpl::s_item<svgpp::tag::attribute::fill, boost::mpl::s_item<svgpp::tag::attribute::stroke_width, boost::mpl::s_item<svgpp::tag::attribute::stroke, boost::mpl::s_item<svgpp::tag::attribute::transform, boost::mpl::set0<mpl_::na> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, svgpp::viewport_policy<svgpp::policy::viewport::as_transform>, svgpp::path_policy<PathPolicy>, svgpp::context_factories<ChildContextFactories>, svgpp::color_factory<svgpp::factory::color::percentage_adapter<ColorFactoryBase> >, svgpp::length_policy<svgpp::policy::length::forward_to_method<Canvas, const svgpp::factory::length::unitless<float, float, svgpp::tag::length_units::mm> > >, svgpp::attribute_traversal_policy<AttributeTraversal> >&)’ is implicitly deleted because the default definition would be ill-formed:
205 | class on_exit_attributes_functor: boost::noncopyable
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
. . .
. . .
. . .
My environment is Linux Mint Una 20.3, cmake
version is 3.16.3 and make
is 4.2.1
But the building fails in the last step
cmake --build .
If it helps, the error happens while linking svg.cpp.o
and main.cpp.o
I checked the github issues page and they don't seem to be responsive and no one had this issue
I solved the problem using a docker image based on Ubuntu 18.04 and it's working perfectly