{"id":52,"date":"2020-09-29T19:47:33","date_gmt":"2020-09-29T17:47:33","guid":{"rendered":"https:\/\/www.dafabhoid.de\/?p=52"},"modified":"2020-10-14T12:52:37","modified_gmt":"2020-10-14T10:52:37","slug":"qt5-anwendung-mit-mingw-9-uebersetzen","status":"publish","type":"post","link":"https:\/\/www.dafabhoid.de\/?p=52","title":{"rendered":"Qt5 Anwendung mit MinGW 9 \u00fcbersetzen"},"content":{"rendered":"\n<p>Versucht man eine Qt5 Anwendung mit MinGW-W64 zu \u00fcbersetzen, st\u00f6\u00dft man sehr wahrscheinlich auf folgendes Problem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>In file included from \/usr\/lib\/gcc\/x86_64-w64-mingw32\/9.3-posix\/include\/c++\/bits\/stl_algo.h:59,\n                 from \/usr\/lib\/gcc\/x86_64-w64-mingw32\/9.3-posix\/include\/c++\/algorithm:62,\n                 from \/opt\/Qt5\/include\/QtCore\/qglobal.h:142,\n                 ...\n\n\/usr\/lib\/gcc\/x86_64-w64-mingw32\/9.3-posix\/include\/c++\/cstdlib:75:15: fatal error: stdlib.h: No such file or directory\n   75 | #include_next &lt;stdlib.h>\n      |               ^~~~~~~~~~\ncompilation terminated.<\/code><\/pre>\n\n\n\n<p>Hilfreich dabei war ein <a href=\"https:\/\/ocroquette.wordpress.com\/2018\/11\/02\/mingw-gcc-error-stdlib-h-no-such-file-or-directory-in-include_next\/\" data-type=\"URL\" data-id=\"https:\/\/ocroquette.wordpress.com\/2018\/11\/02\/mingw-gcc-error-stdlib-h-no-such-file-or-directory-in-include_next\/\">Blog-Eintrag von ocroquette<\/a>: Die Fehlerursache liegt in den System-Includepfaden, die man gcc mit dem <code>-isystem<\/code> Schalter mitteilt. Leider f\u00fcgt Qt5 seine eigenen Headerdateien selbst als System-Include hinzu und sorgt dadurch daf\u00fcr, dass der Standard-Includepfad von MinGW32 nicht mehr von den Qt5 Headerdateien beachtet wird. Zur L\u00f6sung muss man diesen manuell hinzuf\u00fcgen, beispielsweise in CMake:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (${MINGW})\n    list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES \/usr\/x86_64-w64-mingw32\/include)\nendif()<\/code><\/pre>\n\n\n\n<p>Dieser Codeschnipsel sollte am besten nach dem Importieren von Qt5 und vor dem Definieren eigener Targets einf\u00fcgen.<\/p>\n\n\n\n<p><strong>Nachtrag vom 14.10.2020:<\/strong><\/p>\n\n\n\n<p>Mit Qt 5.14 kommt ein weiteres Problem hinzu, hier kommt der Fehler schon beim importieren von Qt5::Core zum Vorschein, jedoch findet MinGW diesmal seine Standardbibliotheken nicht mehr:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CMake Error at \/opt\/Qt5\/lib\/cmake\/Qt5Core\/Qt5CoreConfig.cmake:92 (message):\n    Library not found: mpr\nCall Stack (most recent call first):\n    \/opt\/Qt5\/lib\/cmake\/Qt5Core\/Qt5CoreConfig.cmake:272 (_qt5_Core_process_prl_file)\n  \/opt\/Qt5\/lib\/cmake\/Qt5\/Qt5Config.cmake:28 (find_package)\n  CMakeLists.txt:13 (find_package)<\/code><\/pre>\n\n\n\n<p>Auch hier bringt Qt5 wohl den Standardincludepfad durcheinander, und der Fix ist sehr \u00e4hnlich wie oben:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (${MINGW})\n    list(APPEND CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES \/usr\/x86_64-w64-mingw32\/lib)\nendif()<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Versucht man eine Qt5 Anwendung mit MinGW-W64 zu \u00fcbersetzen, st\u00f6\u00dft man sehr wahrscheinlich auf folgendes Problem: Hilfreich dabei war ein Blog-Eintrag von ocroquette: Die Fehlerursache liegt in den System-Includepfaden, die man gcc mit dem -isystem Schalter mitteilt. Leider f\u00fcgt Qt5 seine eigenen Headerdateien selbst als System-Include hinzu und sorgt dadurch daf\u00fcr, dass der Standard-Includepfad von [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[13,12,11],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-build","tag-mingw","tag-qt5"],"_links":{"self":[{"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52"}],"version-history":[{"count":6,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions"}],"predecessor-version":[{"id":66,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions\/66"}],"wp:attachment":[{"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dafabhoid.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}