Forum: PC-Programmierung QT library installieren


von Hopeful_Optimizer (Gast)


Lesenswert?

Hallo,

ich möchte aktuell die Library libcmaes 
(https://github.com/beniz/libcmaes
https://github.com/beniz/libcmaes/wiki) unter Linux und QT installieren 
und bin daran kläglich gescheitert. Mit der Installation von solchen 
Libs tue ich mich deutlich schwerer als mit der eigentlichen 
Programmiersprache.

Ich habe auch ehrlich gesagt immer noch nicht verstanden ob dieser 
Build-Vorgang einer solchen Lib überhaupt immer notwendig ist oder 
nicht.

Die geforderten Abhängigkeiten wie libeigen-dev habe ich natürlich 
installiert.

Mein erster Versuch war ganz frech ohne den Build-Vorgang mal die src 
der Lib in mein Projektordner zu kopieren und in die Ordner in der der 
.pro anzugeben:
1
TEMPLATE = app
2
CONFIG += console c++11
3
CONFIG -= app_bundle
4
CONFIG -= qt
5
SOURCES += main.cpp
6
INCLUDEPATH += "$$PWD/libcmaes-master/src"
7
INCLUDEPATH += /usr/include/eigen3

Das #include "cmaes.h" wird so geschluckt allerdings wirft der Compiler 
den
1
Fehler: cmaes_export.h: No such file or directory.
Für den hier vermiedenen Buildvorgang wird in der Anleitung an einem 
Punkt beschrieben:
1
echo "#define CMAES_EXPORT" > cmaes_export.h
Also habe ich frech diese Datei erstellt und die Zeile reingegeben.
Und jetzt kommt der Fehler:
1
libcmaes_config.h: No such file or directory

Nun gut so funktioniert das wohl nicht und ich werde doch brav nach 
Anleitung vorgehen:
1
sudo apt-get install autoconf automake libtool libgoogle-glog-dev libgflags-dev libeigen3-dev
und dann
1
./autogen.sh
2
echo "#define CMAES_EXPORT" > cmaes_export.h
3
./configure
4
make

dort werden .lo Dateien erstellt und diese werden wieso auch immer an 
einem versteckten Ort abgelegt unter: 
/home/user/.local/share/Trash/files/libcmaes-master
Je nachdem ob ich ./configure mit "--prefix=/home/username" oder ohne 
den Prefix gemacht habe sind auch Dinge im Originalordner entstanden...
Das Ganze ist ohne Fehlermeldungen abgelaufen, sah also so aus als ob 
alles ok.

Zum compilieren eines code snippets wird in der Beschreibung 
(https://github.com/beniz/libcmaes/wiki) gesagt:
1
g++ -fopenmp -std=gnu++11 -I/path/to/eigen3/ -I/path/to/include/libcmaes -L/path/to/lib -o sample_code sample-code.cc -lcmaes
oder
1
g++ -fopenmp -std=gnu++11 -I/path/to/eigen3/ -I/home/username/include/libcmaes -L/home/username/lib -o sample_code sample-code.cc -lcmaes

Was mich wundert aus den Angaben lässt sich vermuten, dass eigentlich in 
einem Pfad wie -I/home/username/include/libcmaes und 
-L/home/username/lib beim Build Dinge angelegt werden sollten?. Es wurde 
aber nichts angelegt.

Zudem komme ich nicht weiter mit den Compiler flags in der Projektdatei 
(.pro) von QT.
probiert habe ich sowas wie:
1
INCLUDEPATH += -I/home/l/.local/share/Trash/files/libcmaes-master/src
2
INCLUDEPATH += -I/usr/include/eigen3
3
LIBS += -L/home/l/.local/share/Trash/files/libcmaes-master/src -lcmaes -fopenmp -std=gnu++11

Naja ich hab damit jetzt derart viel Zeit vergeudet, dass ich das im 
Notfall dann über ein Freelancer machen muss.

Mich würde jetzt allerdings mal interessieren:
- muss das ganze build Gedöns denn überhaupt sein mit den .lo -Files?. 
Denn im src Ordner liegen doch eigentlich schon alle wichtigen header 
files drin etc.

- Wenn das build sein muss, hat jemand eine Idee was an der Sache nicht 
läuft, warum ggf die Pfade lib und include nicht angelegt werden? Und 
was muss in die Projektdatei (.pro) von QT rein?

Grüße

von Hopeful_Optimizer (Gast)


Lesenswert?

Kann gelöscht werden hat sich erledigt, per cmake hat es dann geklappt.

von Vincent H. (vinci)


Lesenswert?

Für die Zukunft. Die Wahrscheinlichkeit dass Qt im Repo der Distri 
deiner Wahl liegt ist hoch, sehr hoch.

von Rolf M. (rmagnus)


Lesenswert?

Hopeful_Optimizer schrieb:
> und dann./autogen.sh
> echo "#define CMAES_EXPORT" > cmaes_export.h
> ./configure
> make
> dort werden .lo Dateien erstellt und diese werden wieso auch immer an
> einem versteckten Ort abgelegt unter:
> /home/user/.local/share/Trash/files/libcmaes-master

Trash - also Papierkorb. Dies sind also vermutlich Dateien, die jemand 
gelöscht hat und die dort nur zur Wiederherstellung gespeichert sind.
Was du vergessen hast, ist der Schritt "make install", der die Dateien 
dann in den Prefix schreibt, den du angegeben hast.

Hopeful_Optimizer schrieb:
> Mich würde jetzt allerdings mal interessieren:
> - muss das ganze build Gedöns denn überhaupt sein mit den .lo -Files?.
> Denn im src Ordner liegen doch eigentlich schon alle wichtigen header
> files drin etc.

Was heißt "etc"? Die Header-Files alleine bringen dir nichts. Du 
brauchst auch die Bibliothek dazu. Die Header sagen deinem Compiler nur, 
welche Funktionen es gibt, aber deren Implementation muss ja auch 
verfügbar sein.

> - Wenn das build sein muss, hat jemand eine Idee was an der Sache nicht
> läuft, warum ggf die Pfade lib und include nicht angelegt werden?

Weil du "make install" vergessen hast.

Vincent H. schrieb:
> Für die Zukunft. Die Wahrscheinlichkeit dass Qt im Repo der Distri
> deiner Wahl liegt ist hoch, sehr hoch.

Es geht nicht um Qt, sondern libcmaes, was zumindest bei Debian nicht 
vorhanden zu sein scheint.

von Morten (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.