Search code examples
gccmakefileconfiguregraph-tool

Makefile:500: recipe for target 'graph_cairo_draw.lo' failed


I am trying to compile the current git (2.19dev) version of graph-tool. As far as I can tell gcc 5.4 is being used. I am running Ubuntu 16.04. I have run:

git clone [email protected]:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh
sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp
sudo make -Wno-unused-local-typedefs

That seemed to fail with the note Makefile:500: recipe for target 'graph_cairo_draw.lo' failed.

So I thought I would try again (after deleting all the files) and check the output of the config.log after running configure. So I ran:

git clone [email protected]:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh

That returned:

libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:22: installing './compile'
configure.ac:18: installing './config.guess'
configure.ac:18: installing './config.sub'
configure.ac:20: installing './install-sh'
configure.ac:20: installing './missing'
src/graph/Makefile.am: installing './depcomp'
src/graph_tool/Makefile.am:3: installing './py-compile'

I then ran sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp followed by sudo chmod o+rw config.log as I couldn't open config.log. configure did not print any error messages to the screen but config.log seems to show some errors. Some of these are:

configure:3811: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.

configure:3811: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.

configure:4588: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.

I unfortunately do not know what precisely I am looking for or what these error messages mean. Is anybody able to help me with this? This is a cross-post from here where the original config.logs are attached: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/Errors-installing-2-19dev-td4026942.html

EDIT: Following advice in the comments the problem seems to be with make not configure. The make command that I ran was

make -Wno-unused-local-typedefs

This returned the following screen oputput of errors:

make  all-recursive
make[1]: Entering directory '/home/pmj27/graph-tool'
Making all in src
make[2]: Entering directory '/home/pmj27/graph-tool/src'
Making all in graph
make[3]: Entering directory '/home/pmj27/graph-tool/src/graph'
Making all in centrality
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/centrality'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/centrality'
Making all in clustering
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/clustering'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/clustering'
Making all in correlations
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/correlations'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/correlations'
Making all in draw
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/draw'
  CXX      graph_cairo_draw.lo
In file included from ./../graph.hh:28:0,
                 from graph_cairo_draw.cc:18:
./../graph_adjacency.hh:223:59: error: ‘distance_to’ function uses ‘auto’ type specifier without trailing return type
         auto distance_to(base_edge_iterator const& other) const
                                                           ^
./../graph_adjacency.hh:223:59: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:367:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:367:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:369:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:369:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:372:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                               ^
./../graph_adjacency.hh:372:62: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                                              ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:373:48: error: request for member ‘idx’ in ‘a’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                ^
./../graph_adjacency.hh:373:56: error: request for member ‘idx’ in ‘b’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                        ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:380:44: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](auto idx) -> bool
                                            ^
./../graph_adjacency.hh: In function ‘std::pair<typename boost::adj_list<Vertex>::edge_descriptor, bool> boost::edge(Vertex, Vertex, const boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:601:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              [&](const auto& e) -> bool {return e.first == t;});
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:601:67: error: request for member ‘first’ in ‘e’, which is of non-class type ‘const int’
                              [&](const auto& e) -> bool {return e.first == t;});
                                                                   ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:711:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:711:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:712:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                               ^
./../graph_adjacency.hh:712:51: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                                                   ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:717:43: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                     if (!pred(mk_out_edge.def(v, oe)))
                                           ^
./../graph_adjacency.hh:723:50: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](const auto& ei) -> bool
                                                  ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:725:65: error: request for member ‘def’ in ‘mk_in_edge’, which is of non-class type ‘int’
                                            if (!pred(mk_in_edge.def(t, ei)))
                                                                 ^
./../graph_adjacency.hh:727:51: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                            if (ei.first == v)
                                                   ^
./../graph_adjacency.hh:729:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                                g._free_indexes.push_back(ei.second);
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:739:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&](auto& oe)
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:741:64: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                        return pred(mk_out_edge.def(v, oe));
                                                                ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:755:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:755:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:756:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                               ^
./../graph_adjacency.hh:756:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:761:39: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                 if (!pred(mk_out_edge.def(v, ei)))
                                       ^
./../graph_adjacency.hh:768:40: error: expression cannot be used as a function
                 auto& pos = get_pos(idx);
                                        ^
./../graph_adjacency.hh:779:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                [&](auto& oe)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:781:60: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                    return pred(mk_out_edge.def(v, oe));
                                                            ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:787:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].second;},
                                          ^
./../graph_adjacency.hh:790:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].first;},
                                          ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:798:27: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     clear_vertex(v, g, [](auto&&){ return true; });
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:810:25: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     auto shift_es = [&](auto& edges, int i)
                         ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:812:31: error: invalid types ‘int[int]’ for array subscript
         for (auto& e : edges[i])
                               ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:842:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                              ^
./../graph_adjacency.hh:842:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                                               ^
./../graph_adjacency.hh:843:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              const auto& get_pos)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:865:51: error: expression cannot be used as a function
                             auto pos = get_pos(idx);
                                                   ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:873:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].second;});
                                     ^
./../graph_adjacency.hh:875:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].first;});
                                     ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:926:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:927:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return t == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:937:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:938:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return s == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:963:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                              ^
./../graph_adjacency.hh:963:43: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                                           ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:965:48: error: request for member ‘begin’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                ^
./../graph_adjacency.hh:965:63: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                               ^
./../graph_adjacency.hh:966:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                          [&] (const auto& ei) -> bool
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:967:58: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                          ^
./../graph_adjacency.hh:967:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:968:35: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 if (iter != elist.end())
                                   ^
./../graph_adjacency.hh:970:27: error: request for member ‘erase’ in ‘elist’, which is of non-class type ‘int’
                     elist.erase(iter);
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:982:34: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                  ^
./../graph_adjacency.hh:982:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:984:42: error: request for member ‘back’ in ‘elist’, which is of non-class type ‘int’
                 const auto& back = elist.back();
                                          ^
./../graph_adjacency.hh:986:36: error: expression cannot be used as a function
                 get_pos(back.second) = pindex;
                                    ^
./../graph_adjacency.hh:988:23: error: request for member ‘pop_back’ in ‘elist’, which is of non-class type ‘int’
                 elist.pop_back();
                       ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:991:50: error: invalid use of ‘auto’
             remove_e(oes, [&](size_t idx) -> auto& {return g._epos[idx].first;});
                                                  ^
./../graph_adjacency.hh:992:50: error: invalid use of ‘auto’
             remove_e(ies, [&](size_t idx) -> auto& {return g._epos[idx].second;});
                                                  ^
In file included from ./../graph_filtering.hh:49:0,
                 from graph_cairo_draw.cc:22:
./../graph_selectors.hh: At global scope:
./../graph_selectors.hh:78:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:78:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:86:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:86:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:98:44: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        detail::no_weightS) const
                                            ^
./../graph_selectors.hh:98:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:106:71: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const ConstantPropertyMap<Value, Key>& weight) const
                                                                       ^
./../graph_selectors.hh:106:71: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:114:61: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const UnityPropertyMap<Value, Key>&) const
                                                             ^
./../graph_selectors.hh:114:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:121:72: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph& g, std::true_type, Weight& weight) const
                                                                        ^
./../graph_selectors.hh:121:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:134:66: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph&, std::false_type, Weight&&)  const
                                                                  ^
./../graph_selectors.hh:134:66: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:149:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:149:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:157:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:157:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:165:72: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const ConstantPropertyMap<Value, Key>& weight) const
                                                                        ^
./../graph_selectors.hh:165:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:173:62: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const UnityPropertyMap<Value, Key>&) const
                                                              ^
./../graph_selectors.hh:173:62: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:181:63: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, const Weight& weight) const
                                                               ^
./../graph_selectors.hh:181:63: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:194:61: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, detail::no_weightS) const
                                                             ^
./../graph_selectors.hh:194:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:208:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:208:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:216:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:216:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:229:44: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           Weight&& weight) const
                                            ^
./../graph_selectors.hh:229:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:238:77: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           const Graph& g, std::false_type, Weight&& weight) const
                                                                             ^
./../graph_selectors.hh:238:77: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:255:56: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
     auto operator()(const Descriptor& d, const Graph&) const
                                                        ^
./../graph_selectors.hh:255:56: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:673:44: error: ‘mk_range’ function uses ‘auto’ type specifier without trailing return type
 auto mk_range(std::pair<Iter, Iter>&& range)
                                            ^
./../graph_selectors.hh:673:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:680:35: error: ‘vertices_range’ function uses ‘auto’ type specifier without trailing return type
 auto vertices_range(const Graph& g)
                                   ^
./../graph_selectors.hh:680:35: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:687:32: error: ‘edges_range’ function uses ‘auto’ type specifier without trailing return type
 auto edges_range(const Graph& g)
                                ^
./../graph_selectors.hh:687:32: note: deduced return type only available with -std=c++14 or -std=gnu++14

There are many more lines of errors but posting it all takes me over the character limit.


Solution

  • The C++ source that fails to compile employs features from the C++14 standard, so it requires the compiler option -std=c++14, which is not being supplied through your ./configure command.

    This is a bug in the autotooling of the package (which generates the configure script). As a package user you should not need to specify the applicable C++ language standard for a successful build: it should be pre-configured.

    You might be seeing this bug because you are using a master branch head of the repo, rather than a stable package release, but it's still a quality gaffe if the master branch head doesn't build with the default ./configure - and it doesn't: I confirm your build break.

    You can control the C++ compilation options that ./configure will generate by assigning the desired options to CXXFLAGS in its commandline. (Run ./configure -h for fuller details.)

    ./configure CXXFLAGS=-std=c++14
    make
    sudo make install
    

    will give you a successful build and install, assuming that you have satisfied all the dependencies.

    Incidentally the make command you've posted,

    sudo make -Wno-unused-local-typedefs
    

    doesn't make sense, although is this unconnected with the build break. You're attempting to pass the compiler option -Wno-unused-local-typedefs to make, which is not the compiler and just ignores it. If you wish to pass this additional option to the compiler then add it to the CXXFLAGS you pass to ./configure:

    ./configure CXXFLAGS='-std=c++14 -Wno-unused-local-typedefs'
    

    It will suppress some minor warnings in the build, but is unnecessary.