2015-04-14 1 views
-1

J'ai une erreur lorsque j'essaie de compiler du code en utilisant CGAL dans Qt Creator.Erreur lors de la compilation de CGAL avec Qt Creator

Voici mon fichier .pro:

QT  += core 

QT  -= gui 

TARGET = TestCCGALAppliConsole 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= x86_64 
CONFIG += i386 

TEMPLATE = app 

INCLUDEPATH += /opt/local/include 
LIBS  += -L/opt/local/include 

SOURCES += main.cpp 



win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/release/ -lCGAL 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/debug/ -lCGAL 
else:unix: LIBS += -L$$PWD/../../../opt/local/lib/ -lCGAL 

INCLUDEPATH += $$PWD/../../../opt/local/include 
DEPENDPATH += $$PWD/../../../opt/local/include 


win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/release/ -lCGAL_ImageIO 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/debug/ -lCGAL_ImageIO 
else:unix: LIBS += -L$$PWD/../../../opt/local/lib/ -lCGAL_ImageIO 

INCLUDEPATH += $$PWD/../../../opt/local/include 
DEPENDPATH += $$PWD/../../../opt/local/include 

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/release/ -lCGAL_Core 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../opt/local/lib/debug/ -lCGAL_Core 
else:unix: LIBS += -L$$PWD/../../../opt/local/lib/ -lCGAL_Core 

INCLUDEPATH += $$PWD/../../../opt/local/include 
DEPENDPATH += $$PWD/../../../opt/local/include 

Quand j'ai ce code (il est juste un exemple), cela fonctionne:

#include <iostream> 
#include <CGAL/Simple_cartesian.h> 
#include <CGAL/Exact_predicates_exact_constructions_kernel.h> 

typedef CGAL::Simple_cartesian<double> Kernel; 
typedef Kernel::Point_2 Point_2; 
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel2; 
typedef Kernel2::Point_2 Point_2_2; 

int main() 
{ 
    // Point_2_2 p1(0, 0.3), q1(1, 0.6), r1(2, 0.9); 
    { 
    Point_2 p(0, 0.3), q(1, 0.6), r(2, 0.9); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    { 
    Point_2 p(0, 1.0/3.0), q(1, 2.0/3.0), r(2, 1); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    { 
    Point_2 p(0,0), q(1, 1), r(2, 2); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    return 0; 
} 

Mais quand je décommenter la première ligne dans la principal: Point_2_2 p1(0, 0.3), q1(1, 0.6), r1(2, 0.9);

Il ne fonctionne pas et j'ai cette erreur:

: -1: erreur: symbole (s) non trouvé pour l'architecture x86_64

Quelqu'un pour me aider?

Merci!

+0

Afficher la ligne de commande exécutée et le message d'erreur complet. Il vous manque probablement '-lmpfr -lgmp'. CMake gérerait cela pour vous si vous l'utilisiez. –

+0

Je compile directement dans Qt Creator et c'est le message d'erreur complet. J'ai ajouté '-mpmp -lgmp' mais cela ne résout pas le problème. –

+0

L'erreur que vous signalez est trop courte. S'il vous plaît essayer de trouver quels symboles ne sont pas trouvés. Cela devrait être quelque chose dans le journal de compilation complet. – lrineau

Répondre

2

est ici la solution au problème:

fichier .pro:

QT  += core 

QT  -= gui 

TARGET = TestCCGALAppliConsole 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG += c++11 

TEMPLATE = app 

INCLUDEPATH += /usr/local/include 
DEPENDPATH += /usr/local/include 
LIBS  += -L/usr/local/include 

macx: LIBS += -L/usr/local/lib/ -lgmp 
macx: LIBS += -L/usr/local/lib/ -lmpfr 
macx: LIBS += -L/usr/local/lib/ -lCGAL 

SOURCES += main.cpp 

main.cpp:

#include <iostream> 
#include <CGAL/Simple_cartesian.h> 
#include <CGAL/Exact_predicates_exact_constructions_kernel.h> 

typedef CGAL::Simple_cartesian<double> Kernel; 
typedef Kernel::Point_2 Point_2; 
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel2; 
typedef Kernel2::Point_2 Point_2_2; 

int main() 
{ 
    Point_2_2 p1(0, 0.3), q1(1, 0.6), r1(2, 0.9); 
    { 
    Point_2 p(0, 0.3), q(1, 0.6), r(2, 0.9); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    { 
    Point_2 p(0, 1.0/3.0), q(1, 2.0/3.0), r(2, 1); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    { 
    Point_2 p(0,0), q(1, 1), r(2, 2); 
    std::cout << (CGAL::collinear(p,q,r) ? "collinear\n" : "not collinear\n"); 
    } 
    return 0; 
} 

Compilé avec Clang (x86 64 bits) et Qt 5.4.1 version clang 64bit.