2016-04-21 4 views
1

Ich mag es herauszufinden, wie man ein Rezept erstellt, das von git heruntergeladen und mit einer make-Datei erstellt wird. Zum Beispiel:Wie erstelle ich CMake Rezepte in Yocto?

das g3logger (git https://github.com/KjellKod/g3log.git)

Wie muss das Rezept "bb" seine Datei aussieht?

+1

Ähnliche Frage wurde bereits beantwortet in: http://StackOverflow.com/Questions/18382407/cmake-with-Bitbake-recipe – iksajotien

+1

gibt es immer noch ein Problem, dass der G ++ - Compiler nicht die C++ - Header findet. Es bricht, wenn CMake versucht, "#include " –

Antwort

3

Also, das ist ein Problem in g3log (die anderen Programme wahrscheinlich auch). Wenn Sie öffnen ‚Build.cmake‘ und schauen Sie sich um Linien 53-56 Sie sehen:

ELSE() 
     set(PLATFORM_LINK_LIBRIES rt) 
     set(CMAKE_CXX_FLAGS "-Wall -rdynamic -Wunused -std=c++11 -pthread -D_GLIBCXX_USE_NANOSLEEP -D_GLIBCXX_USE_SCHED_YIELD") 
    ENDIF() 

Welche überschreibt, was Openembedded in toolchain.cmake gesetzt hat. Wenn Sie dies ändern, anstatt zu:

 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -rdynamic -Wunused -std=c++11 -pthread -D_GLIBCXX_USE_NANOSLEEP -D_GLIBCXX_USE_SCHED_YIELD") 

wird es nun die Flaggen erben, die Openembedded möchte, dass Sie so haben, wie --sysroot = so dass Standard enthält gefunden werden.

+0

Wow. Großer Fang! Das hat mir eine Menge Ärger erspart – Nitay

1

Zusätzlich zu Ihrem Kommentar: Vielleicht ist es ein Fehler von Ihrem Makefile? Für String sollte es sein:

#include <string.h> 

oder

#include <cstring> 

Sie können auch für bestimmte Aufgabe wie do_compile zeigen Protokolle, so dass wir einen tieferen Einblick haben.

Tipps zur Fehlersuche Aufgaben in bitbake: Yocto Ref Manual - Debugging build failures

+0

zu kompilieren Ich denke, dass es irgendwo in meiner "g3log.bb" Datei ist. Ich gebe Ihnen ein Angebot: ################### ZUSAMMENFASSUNG = "g3log" SECTION = "sek4" HÄNGT = "Boost" SRCREV = " db23383aeaa9704f466422d3cb6ea527c2434290" SRC_URI = "git: //github.com/KjellKod/g3log.git" S = "$ {WORKDIR}/git" vererben pkgconfig Cmake LIZENZ = "LIZENZ" LIC_FILES_CHKSUM = „file: // $ {WORKDIR}/git/LIZENZ; md5 = 7246f848faa4e9c9fc0ea91122d6e680 " #################### –

+0

Das Rezept scheint nicht gebrochen zu sein (ich kann nur vorschlagen Platzieren von LICENSE-Variablen vor der SR CREV und DEPENDS nach S). Bitte zeigen Sie die Ausgabe von: 'bitbake -c compile -f g3log'. – iksajotien

+0

ok fertig! das (verkürzte) Protokoll: arm-poky-linux-gnuabi-g ++ -Dg3logger_shared_EXPORTS -Wall -rdynamisch -Wunused -std = C++ 11 -Pthread -D GLIBCXX_USE_NANOSLEEP -D GLIBCXX_USE_SCHED_YIELD -O2 -pipe -g -feliminate-unused-debug -types -O2 -pipe -g -filiminate-unused-debug-types -visibility-inlines-hidden -DNDEBUG -fPIC -I/src -I/Beispiel -o CMakeFiles/g3logger_shared.dir/src/logcapture.cpp.o - c /src/logcapture.cpp | In einer Datei enthalten von /src/g3log/logmessage.hpp:13:0, | aus /src/logmessage.cpp:9: | /src/g3log/loglevels.hpp:25:18: Schwerwiegender Fehler: string: Keine solche Datei oder kein Verzeichnis –