0

I am trying to compile this small program:

// Copyright (c) 2002  Max Planck Institut fuer Informatik (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s)     : Lutz Kettner

#include <CGAL/basic.h>

#ifdef  _MSC_VER

#include <iostream>

int main() {
  std::cout << "Geomview doesn't work on Windows, so no demo." << std::endl;
  return 0;
}
#else // can have Geomeview

#include <CGAL/MP_Float.h>
#include <CGAL/Quotient.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_geomview_ostream.h>
#include <CGAL/leda_real.h>


typedef CGAL::Quotient<CGAL::MP_Float>          NT;
typedef CGAL::Cartesian<NT>                     Kernel;
typedef Kernel::Point_3                         Point;
typedef CGAL::Polyhedron_3<Kernel>              Polyhedron;

int main() {

    NT i = NT(1.0);
    NT j = NT(-1.0);

    Point p( i, i, i);
    Point q( i, j, j);
    Point r( j, i, j);
    Point s( j, j, i);
    Polyhedron P;

    Point t( j, j, j);
    Point u( j, i, i);
    Point v( i, j, i);
    Point w( i, i, j);
    Polyhedron Q;

    P.make_tetrahedron(p,q,r,s);
    Q.make_tetrahedron(t,u,v,w);

    Point a( (p.x()+q.x())/NT(2) , (p.y()+q.y())/NT(2) , (p.z()+q.z())/NT(2));
    Point b( (t.x()+u.x())/NT(2) , (t.y()+u.y())/NT(2) , (t.z()+u.z())/NT(2));

    Polyhedron P1, P2, Q1, Q2;

    P1.make_tetrahedron(a,q,r,s);
    P2.make_tetrahedron(p,a,r,s);
    Q1.make_tetrahedron(b,u,v,w);
    Q2.make_tetrahedron(t,b,v,w);


    CGAL::Geomview_stream geo;
    geo << CGAL::RED << P;
    geo << CGAL::BLUE << Q;

    geo << CGAL::Color(200,0,50) << P1;
    geo << CGAL::Color(200,50,0) << P2;
    geo << CGAL::Color(0,50,200) << Q1;
    geo << CGAL::Color(50,0,200) << Q2;

    Point click;
    geo >> click;
    return 0;
}

#endif

I have installed CGAL on my home folder and have linked it within the cmake-gui.

I have also compiled my CGAL linking it to my LEDA in the cmake-gui. It is also in my home folder.

If I remove the 'include leda_real.h' line the program works perfectly fine. With the include, though, I get the following error:

Linking CXX executable TetraCut
/home/turtle/LEDA/libleda.so: undefined reference to `XReparentWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryColors'
/home/turtle/LEDA/libleda.so: undefined reference to `XScreenOfDisplay'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetImage'
/home/turtle/LEDA/libleda.so: undefined reference to `XTextWidth'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBackgroundPixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XServerVendor'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreatePixmapFromBitmapData'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeFont'
/home/turtle/LEDA/libleda.so: undefined reference to `XStoreName'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreatePixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateSimpleWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetErrorHandler'
/home/turtle/LEDA/libleda.so: undefined reference to `XUndefineCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XGrabPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryTree'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawImageString'
/home/turtle/LEDA/libleda.so: undefined reference to `XCopyArea'
/home/turtle/LEDA/libleda.so: undefined reference to `XIconifyWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawLines'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBorder'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillRectangle'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWMProtocols'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateFontCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XSelectInput'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipMask'
/home/turtle/LEDA/libleda.so: undefined reference to `XChangeGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XCheckWindowEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawRectangle'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetNormalHints'
/home/turtle/LEDA/libleda.so: undefined reference to `XInternAtom'
/home/turtle/LEDA/libleda.so: undefined reference to `XParseColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawArc'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetInputFocus'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawPoint'
/home/turtle/LEDA/libleda.so: undefined reference to `XAllocColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawPoints'
/home/turtle/LEDA/libleda.so: undefined reference to `XVendorRelease'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipOrigin'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetIconName'
/home/turtle/LEDA/libleda.so: undefined reference to `XLookupString'
/home/turtle/LEDA/libleda.so: undefined reference to `XMoveResizeWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XPending'
/home/turtle/LEDA/libleda.so: undefined reference to `XUngrabPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawString'
/home/turtle/LEDA/libleda.so: undefined reference to `XPutBackEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XConfigureWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawSegments'
/home/turtle/LEDA/libleda.so: undefined reference to `XMapWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XRaiseWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateBitmapFromData'
/home/turtle/LEDA/libleda.so: undefined reference to `XClearArea'
/home/turtle/LEDA/libleda.so: undefined reference to `XDoesBackingStore'
/home/turtle/LEDA/libleda.so: undefined reference to `XRefreshKeyboardMapping'
/home/turtle/LEDA/libleda.so: undefined reference to `XFree'
/home/turtle/LEDA/libleda.so: undefined reference to `XCopyPlane'
/home/turtle/LEDA/libleda.so: undefined reference to `XCheckMaskEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XOpenDisplay'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWMProperties'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetDashes'
/home/turtle/LEDA/libleda.so: undefined reference to `XNextEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetErrorText'
/home/turtle/LEDA/libleda.so: undefined reference to `XResizeWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetGeometry'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBackground'
/home/turtle/LEDA/libleda.so: undefined reference to `XUnmapWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XWarpPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XFlush'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDoesSaveUnders'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillArc'
/home/turtle/LEDA/libleda.so: undefined reference to `XDestroyWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XRootWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawLine'
/home/turtle/LEDA/libleda.so: undefined reference to `XChangeWindowAttributes'
/home/turtle/LEDA/libleda.so: undefined reference to `XTranslateCoordinates'
/home/turtle/LEDA/libleda.so: undefined reference to `XMaskEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDefineCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipRectangles'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetWindowAttributes'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreePixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XLoadQueryFont'
/home/turtle/LEDA/libleda.so: undefined reference to `XStoreColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillPolygon'
/home/turtle/LEDA/libleda.so: undefined reference to `XPutImage'
collect2: error: ld returned 1 exit status
make[2]: *** [TetraCut] Error 1
make[1]: *** [CMakeFiles/TetraCut.dir/all] Error 2
make: *** [all] Error 2

Here is how my cmake-gui looks on both programs:

TetraCut

CGAL

I have installed GMP, MPFR, Boost, libx11-dev, libqt4-dev, and many other libraries trying to get this working and I have failed.

Please. I really need to get this working. If you need any other information about this, I will happily provide it if told how.

I don't know how to proceed anymore, and I have invested a lot of time into this. More than I would like to admit given my humble results. I have found that my original approach using Quotient won't be enough to solve the problem at hand as I require to handle a lot of sqrts. I just can't get the library to work.

Thanks in advance for any clue you may provide!

1 Answers1

0

I was failing.

I thought I needed to link LEDA only with CGAL, but I actually have to link it to my program as well. I failed to understand how to do it.

There is an example of how to do this in the CmakeLists.txt (with the CORE library instead) in the examples. It's the Core example. There also are real numbers in CORE called Expr.

I hope this helps anyone that finds themselves trapped in this. I doubt it, but still.