{"id":2269,"date":"2019-10-13T09:16:59","date_gmt":"2019-10-13T06:16:59","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2269"},"modified":"2024-12-16T22:32:33","modified_gmt":"2024-12-16T19:32:33","slug":"building-project-with-libraries-emscripten","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/de\/2019\/10\/13\/building-project-with-libraries-emscripten\/","title":{"rendered":"Erstellen eines Projekts mit Abh\u00e4ngigkeiten f\u00fcr Emscripten"},"content":{"rendered":"<p>In diesem Beitrag beschreibe ich den Aufbau eines Projekts, das aus mehreren Bibliotheken besteht, mit Emscripten.<br \/>Derzeit unterst\u00fctzt Emscripten den Aufbau gemeinsam genutzter Bibliotheken nicht, daher besteht der erste Schritt darin, alle Bibliotheken von \u201eShared\u201c auf \u201eStatic\u201c zu \u00fcbertragen. Emscripten arbeitet mit seinen eigenen Include-Dateien, daher muss das Problem mit der Sichtbarkeit von Header-Dateien gel\u00f6st werden, indem ich einen Symlink aus dem Systemverzeichnis an die Emscripten-Toolchain weitergeleitet habe:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>ln -s \/usr\/local\/include\/FlameSteelFramework $EMSDK\/fastcomp\/emscripten\/system\/include\/FlameSteelFramework\n<\/code><\/pre>\n<\/div>\n<p>Wenn Sie CMake verwenden, m\u00fcssen Sie SHARED->STATIC in der Datei CMakeLists.txt der Methode add_library \u00e4ndern. Mit den folgenden Befehlen k\u00f6nnen Sie eine Bibliothek\/Anwendung f\u00fcr weitere statische Verkn\u00fcpfungen erstellen:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>emcmake cmake .\nemmake make\n<\/code><\/pre>\n<\/div>\n<p>Als n\u00e4chstes m\u00fcssen Sie die Hauptanwendung erstellen und beim Verkn\u00fcpfen *.a-Bibliotheksdateien angeben. Ich konnte keinen relativen Pfad angeben; der Build wurde erst korrekt abgeschlossen, nachdem die vollst\u00e4ndigen Pfade in der Datei CMakeLists.txt angegeben wurden:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>elseif(EMSCRIPTEN)\ntarget_link_libraries(${FSEGT_PROJECT_NAME} GL GLEW \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/cube-art-project\/sharedLib\/libCubeArtProject.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FlameSteelEngineGameToolkitFSGL\/libFlameSteelEngineGameToolkitFSGL.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FlameSteelEngineGameToolkit\/libFlameSteelEngineGameToolkit.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FlameSteelCore\/libFlameSteelCore.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FlameSteelBattleHorn\/libFlameSteelBattleHorn.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FSGL\/libFSGL.a \n\/home\/demensdeum\/Sources\/cube-art-project-bootstrap\/FlameSteelFramework\/FlameSteelCommonTraits\/libFlameSteelCommonTraits.a)\nelse()\n<\/code><\/pre>\n<\/div>\n<h3>Quellen<\/h3>\n<p><a href=\"https:\/\/emscripten.org\/docs\/compiling\/Building-Projects.html#using-libraries\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/emscripten.org\/ docs\/compiling\/Building-Projects.html#using-libraries<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag beschreibe ich den Aufbau eines Projekts, das aus mehreren Bibliotheken besteht, mit Emscripten.Derzeit unterst\u00fctzt Emscripten den Aufbau gemeinsam genutzter Bibliotheken nicht, daher besteht der erste Schritt darin, alle Bibliotheken von \u201eShared\u201c auf \u201eStatic\u201c zu \u00fcbertragen. Emscripten arbeitet mit seinen eigenen Include-Dateien, daher muss das Problem mit der Sichtbarkeit von Header-Dateien gel\u00f6st werden,<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/de\/2019\/10\/13\/building-project-with-libraries-emscripten\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Erstellen eines Projekts mit Abh\u00e4ngigkeiten f\u00fcr Emscripten&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[119,121],"class_list":["post-2269","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-emscripten","tag-hints","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"de","enabled_languages":["en","ru","zh","de","fr","ja","pt"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=2269"}],"version-history":[{"count":7,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2269\/revisions"}],"predecessor-version":[{"id":3939,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2269\/revisions\/3939"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=2269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=2269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}