c++ - compile a simple test with CGAL -
i have installed cgal brew on mac system. i'm exciting try simple , minimal example. ho can compile g++?
i want compile sample file with:
gcc namefile.cpp -lcgal -i/usr/local/include/cgal
and lot of errors... (too many paste here think)
as example file i'm using
file: examples/arrangement_on_surface_2/sweep_line.cpp #include <cgal/cartesian.h> #include <cgal/mp_float.h> #include <cgal/quotient.h> #include <cgal/arr_segment_traits_2.h> #include <cgal/sweep_line_2_algorithms.h> #include <list> typedef cgal::quotient<cgal::mp_float> nt; typedef cgal::cartesian<nt> kernel; typedef kernel::point_2 point_2; typedef cgal::arr_segment_traits_2<kernel> traits_2; typedef traits_2::curve_2 segment_2; int main() { // construct input segments. segment_2 segments[] = {segment_2 (point_2 (1, 5), point_2 (8, 5)), segment_2 (point_2 (1, 1), point_2 (8, 8)), segment_2 (point_2 (3, 1), point_2 (3, 8)), segment_2 (point_2 (8, 5), point_2 (8, 8))}; // compute intersection points. std::list<point_2> pts; cgal::compute_intersection_points (segments, segments + 4, std::back_inserter (pts)); // print result. std::cout << "found " << pts.size() << " intersection points: " << std::endl; std::copy (pts.begin(), pts.end(), std::ostream_iterator<point_2>(std::cout, "\n")); // compute non-intersecting sub-segments induced input segments. std::list<segment_2> sub_segs; cgal::compute_subcurves(segments, segments + 4, std::back_inserter(sub_segs)); std::cout << "found " << sub_segs.size() << " interior-disjoint sub-segments." << std::endl; cgal_assertion (cgal::do_curves_intersect (segments, segments + 4)); return 0; }
edit:
>>> g++ --version i686-apple-darwin11-llvm-g++-4.2 (gcc) 4.2.1 (based on apple inc. build 5658) (llvm build 2336.11.00) copyright (c) 2007 free software foundation, inc. free software; see source copying conditions. there no >>> g++ sweep_line.cpp in file included /usr/local/include/cgal/bbox_2.h:31, /usr/local/include/cgal/basic_classes.h:31, /usr/local/include/cgal/cartesian/cartesian_base.h:29, /usr/local/include/cgal/cartesian.h:28, sweep_line.cpp:4: /usr/local/include/cgal/array.h:81: error: expected nested-name-specifier before '...' token /usr/local/include/cgal/array.h:81: error: expected '>' before '...' token /usr/local/include/cgal/array.h:83: error: template argument 2 invalid /usr/local/include/cgal/array.h:84: error: expected ',' or '...' before '&' token /usr/local/include/cgal/array.h: in function 'int cgal::make_array(const t&, int)': /usr/local/include/cgal/array.h:86: error: template argument 2 invalid /usr/local/include/cgal/array.h:86: error: invalid type in declaration before '=' token /usr/local/include/cgal/array.h:86: error: 'args' not declared in scope /usr/local/include/cgal/array.h:86: error: expected `}' before '...' token /usr/local/include/cgal/array.h:86: error: expected `}' before '...' token /usr/local/include/cgal/array.h:86: error: expected ',' or ';' before '...' token /usr/local/include/cgal/array.h: @ global scope: /usr/local/include/cgal/array.h:87: error: expected unqualified-id before 'return' /usr/local/include/cgal/array.h:88: error: expected declaration before '}' token warranty; not merchantability or fitness particular purpose. >>>g++ sweep_line.cpp -lcgal -i/usr/local/include/cgal in file included /usr/local/include/cgal/gmpxx_coercion_traits.h:35, /usr/local/include/cgal/mpz_class.h:29, /usr/local/include/cgal/gmpxx.h:47, /usr/local/include/cgal/is_convertible.h:28, /usr/local/include/cgal/rational_traits.h:31, /usr/local/include/cgal/number_type_basic.h:65, /usr/local/include/cgal/basic.h:36, /usr/local/include/cgal/cartesian/cartesian_base.h:28, /usr/local/include/cgal/cartesian.h:28, sweep_line.cpp:4: /usr/local/include/mpfr.h:181: error: expected ';' before '*' token /usr/local/include/mpfr.h:279: error: expected constructor, destructor, or type conversion before 'const' /usr/local/include/mpfr.h:280: error: expected constructor, destructor, or type conversion before 'const' /usr/local/include/mpfr.h:281: error: expected constructor, destructor, or type conversion before 'int' /usr/local/include/mpfr.h:282: error: expected constructor, destructor, or type conversion before 'int' /usr/local/include/mpfr.h:283: error: expected constructor, destructor, or type conversion before 'int' /usr/local/include/mpfr.h:284: error: expected constructor, destructor, or type conversion before 'const' /usr/local/include/mpfr.h:286: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:287: error: expected constructor, destructor, or type conversion before 'int' /usr/local/include/mpfr.h:288: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:289: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:290: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:291: error: expected constructor, destructor, or type conversion before 'int' /usr/local/include/mpfr.h:292: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:293: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:295: error: expected constructor, destructor, or type conversion before 'void' /usr/local/include/mpfr.h:296: error: '__gmp_declspec' not name type /usr/local/include/mpfr.h:297: error: expected constructor, destructor, or type conversion before 'const' /usr/local/include/mpfr.h:300: error: expected constructor, destructor, or type conversion before 'void' /usr/local/include/mpfr.h:301: error: expected constructor, destructor, or type conversion before 'void' /usr/local/include/mpfr.h:302: error: expected constructor, destructor, or type conversion before 'void' /usr/local/include/mpfr.h:303: error: expected constructor, destructor, or type conversion before 'void' /usr/local/include/mpfr.h:304: error: expected constructor, destructor, or type conversion before 'void'
you have 2 ways:
- allow c++11 adding corresponding flag compiler(
--std=c++11
or--std=c++0x
). - define
cgal_cfg_no_cpp0x_array
,cgal_cfg_no_tr1_array
,cgal_cfg_no_variadic_templates
. note: in case needboost/array.hpp
header.
Comments
Post a Comment