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