{"id":3503,"date":"2020-04-02T11:47:46","date_gmt":"2020-04-02T16:47:46","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=3503"},"modified":"2020-04-02T11:47:46","modified_gmt":"2020-04-02T16:47:46","slug":"compiling-qt-5-14-under-msys2","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/","title":{"rendered":"Compiling Qt 5.14 Under Msys2"},"content":{"rendered":"<p>I went down this road because I wanted to compile one simple test program so I could file a bug with GnuEmacs about how they don&#8217;t catch NumLock. This is a really old bug and they seem willing to let it rot until computers cease to exist. My test program was a KeyEvent example I stole from online then added support for NumLock. It took longer to scrape from the Internet than it did to test under Linux.<\/p>\n<p><strong>keypress.h<\/strong><\/p>\n<pre>\/*\r\n * stolen from http:\/\/programmingexamples.wikidot.com\/qt-events\r\n * and modified for Qt 5.14\r\n *\/\r\n#ifndef KEYPRESS_H\r\n#define KEYPRESS_H\r\n\r\n#include \r\n\r\nclass QLabel;\r\nclass QVBoxLayout;\r\n\r\nclass KeyPress : public QWidget\r\n{\r\n    Q_OBJECT\r\npublic:\r\n    KeyPress(QWidget *parent = 0);\r\n\r\nprotected:\r\n    void keyPressEvent(QKeyEvent *);\r\n    void keyReleaseEvent(QKeyEvent *);\r\n\r\nprivate:\r\n    QLabel *myLabel;\r\n    QVBoxLayout *mainLayout;\r\n};\r\n\r\n#endif \/\/ KEYPRESS_H\r\n<\/pre>\n<p><strong>keypress.cpp<\/strong><\/p>\n<pre>\/*\r\n * stolen from http:\/\/programmingexamples.wikidot.com\/qt-events\r\n * and modified for Qt 5.14\r\n *\/\r\n#include \"keypress.h\"\r\n\r\n\r\n#include \r\n#include \r\n#include \r\n\r\nKeyPress::KeyPress(QWidget *parent) :\r\n    QWidget(parent)\r\n{\r\n    myLabel = new QLabel(\"LABEL\");\r\n    mainLayout = new QVBoxLayout;\r\n    mainLayout-&gt;addWidget(myLabel);\r\n    setLayout(mainLayout);\r\n\r\n}\r\n\r\nvoid KeyPress::keyPressEvent(QKeyEvent *event)\r\n{\r\n    if(event-&gt;key() == Qt::Key_Escape)\r\n    {\r\n        myLabel-&gt;setText(\"You pressed ESC\");\r\n    }\r\n\r\n    if (event-&gt;key() == Qt::Key_NumLock)\r\n    {\r\n        myLabel-&gt;setText(\"NumLock was pressed!!!\");\r\n    }\r\n}\r\n\r\nvoid KeyPress::keyReleaseEvent(QKeyEvent *event)\r\n{\r\n    if(event-&gt;key() == Qt::Key_Escape)\r\n    {\r\n        myLabel-&gt;setText(\"You released ESC\");\r\n    }\r\n\r\n    if (event-&gt;key() == Qt::Key_NumLock)\r\n    {\r\n        myLabel-&gt;setText(\"NumLock was released***\");\r\n    }\r\n\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>main.cpp<\/p>\n<p>&nbsp;<\/p>\n<pre>\/*\r\n * stolen from http:\/\/programmingexamples.wikidot.com\/qt-events\r\n * and modified for Qt 5.14\r\n *\/\r\n#include \r\n#include \"keypress.h\"\r\n#include \r\n\r\nint main(int argc, char *argv[])\r\n{\r\n    QApplication a(argc, argv);\r\n\r\n    KeyPress *keyPress = new KeyPress();\r\n    keyPress-&gt;show();\r\n\r\n    return a.exec();\r\n}\r\n\r\n<\/pre>\n<p>It puts up a tiny little window. When you press the [Esc] key it displays a message. Another message when you release the key. I added a pair of messages for NumLock. The reason I went through all of this pain is I wanted to prove to these people that Qt can do it under Msys2\/Windows and Linux so why can&#8217;t you just look at the code in Qt to see how they are intercepting key events. Since Qt is OpenSource, the code is there for all to see.<\/p>\n<p>I had hoped there was a pre-compiled Qt development package in the Msys2 environment. After installing C\/C++ compilers and a few other bits, my hopes were dashed. Adding insult to injury Qt currently only has a mkspec for 32-bit mingw.<\/p>\n<p><strong>Note:<\/strong> I don&#8217;t install the virus known as Windows on a bare machine as the primary OS. If I have to do anything with Windows I install it in a VM. Nobody should let that be a primary computer operating system. At least not on a computer they care about.<\/p>\n<p>Open a terminal in Msys2 and type the following:<\/p>\n<pre>pacman -S base-devel git mercurial cvs wget p7zip\r\npacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain\r\n\r\npacman -S clang\r\npacman -S mingw32\/mingw-w64-i686-clang\r\npacman -S mingw64\/mingw-w64-x86_64-clang\r\npacman -S mingw32\/mingw-w64-i686-clang-analyzer\r\npacman -S mingw64\/mingw-w64-x86_64-clang-analyzer\r\npacman -S mingw32\/mingw-w64-i686-clang-tools-extra\r\npacman -S mingw64\/mingw-w64-x86_64-clang-tools-extra\r\npacman -S mingw32\/mingw-w64-i686-compiler-rt\r\npacman -S mingw64\/mingw-w64-x86_64-compiler-rt\r\npacman -S mingw32\/mingw-w64-i686-libblocksruntime\r\npacman -S mingw64\/mingw-w64-x86_64-libblocksruntime\r\n<\/pre>\n<p>(The clang stuff is mostly to get the llvm stuff Qt is looking for.) Exit out of that terminal and open a new terminal and type<\/p>\n<pre>pacman -Syu\r\n<\/pre>\n<p>You will need to crash out of the terminal rather than typing exit once this is complete. Open a new terminal and type<\/p>\n<pre>pacman -Su\r\n<\/pre>\n<p>to complete installation. Depending on the quality of your Internet connection and the time of day, this could run a long time. You may want to add<\/p>\n<p>&nbsp;<\/p>\n<pre> --disable-download-timeout\r\n<\/pre>\n<p>to your pacman command. It will take even longer because it won&#8217;t be skipping the slow\/sucky mirrors, but it should not fail to download. The timeout feature of pacman seems to have been written by Twitter users. It fails with a message about no bytes within 10 seconds, but only takes 2-3 seconds to do that.<\/p>\n<p>If something happens and pacman crashes (happened to me once) don&#8217;t panic. There is probably a dump file, but you don&#8217;t care about that. Wait a few seconds and retry the command. If you see something like this<\/p>\n<pre>rolan@DESKTOP-HTIGNPK MSYS ~\r\n$ pacman -S mingw-w64-i686-qt5\r\nerror: failed to init transaction (unable to lock database)\r\nerror: could not lock database: File exists\r\n  if you're sure a package manager is not already\r\n  running, you can remove \/var\/lib\/pacman\/db.lck\r\n<\/pre>\n<p>Do this<\/p>\n<pre>rolan@DESKTOP-HTIGNPK MSYS ~\r\n$ rm \/var\/lib\/pacman\/db.lck\r\nrm: remove write-protected regular empty file '\/var\/lib\/pacman\/db.lck'? y\r\n<\/pre>\n<p>Theoretically you are now ready to configure Qt. I unzipped Qt in a shared directory so I had to cd here:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-3504 size-full\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png\" alt=\"msys2 terminal prompt\" width=\"397\" height=\"47\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png 397w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt-300x36.png 300w\" sizes=\"(max-width: 397px) 100vw, 397px\" \/><\/p>\n<p>Paste this in at the prompt.<\/p>\n<pre>windows2unix() { local pathPcs=() split pathTmp IFS=\\;; read -ra split &lt;&lt;&lt; \"$*\"; for pathTmp in \"${split[@],}\"; do pathPcs+=( \"\/${pathTmp\/\/+([:\\\\])\/\/}\" ); done; echo \"${pathPcs[*]}\"; }; systemrootP=$(windows2unix \"$SYSTEMROOT\"); export PATH=\"$PWD\/qtbase\/bin:$PWD\/gnuwin32\/bin:\/c\/msys64\/mingw64\/bin:\/c\/msys64\/usr\/bin:$PATH\"\r\n<\/pre>\n<p>You need more of the path than you typically get. That takes care of it.<\/p>\n<p>&nbsp;<\/p>\n<pre>.\/configure -opensource -confirm-license -release -skip qtwebengine -skip qtvirtualkeyboard -skip qtlocation -opengl desktop -qt-sqlite -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -nomake examples -nomake tests -prefix \/usr\/local\/bin\/qt-5-14-1 -platform win32-g++ -silent \r\n<\/pre>\n<p>Keep in mind I&#8217;m working with 5.14.1. You may want a different install directory. Neither qtvirtualkeyboard nor qtlocation will compile on msys2 so you definitely need to skip them. You might want to skip the 3d too if you have no plans on using it. In a VM assigned 2 CPUs and 8 Gig of RAM it took something like 6 hours to compile.<\/p>\n<p>If configure spits up about some missing dependency, don&#8217;t panic. Simply find the dependency and install it. Remember, you need the 32-bit version for this build of Qt, but you might as well install both the 32 &amp; 64-bit versions if you have the disk space.<\/p>\n<p>Before running configure again you should delete these files.<\/p>\n<pre>$ rm config.summary\r\n$ rm .qmake.cache\r\n$ rm .qmake.stash\r\n$ rm config.cache\r\n$ rm config.log\r\n<\/pre>\n<p>A nice clean configure will end like this without any messages about missing things or errors.<\/p>\n<pre>Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.\r\n\r\nQt is now configured for building. Just run 'make'.\r\nOnce everything is built, you must run 'make install'.\r\nQt will be installed into 'C:\\msys64\\usr\\local\\bin\\qt-5-14-1'.\r\n\r\nPrior to reconfiguration, make sure you remove any leftovers from\r\nthe previous build.\r\n<\/pre>\n<p><strong>Note:<\/strong> If your build fails and you decide to configure differently, you need to run &#8220;make clean&#8221; before you delete the files mentioned above.<\/p>\n<pre>mingw32-make -j 4\r\n<\/pre>\n<p>I only had 2 CPUs assigned to this VM but I still used 4. Please note that you need to use mingw32-make. Hours later, if your build seems to go fine<\/p>\n<pre>mingw32-make install\r\n<\/pre>\n<p>If all goes well, not a given since make install seems to build a bunch of stuff the actual make skipped, you can exit that terminal window. Don&#8217;t try to use it for anything else because you&#8217;ve jacked with the path.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3506\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qt-install.png\" alt=\"path after install\" width=\"576\" height=\"366\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qt-install.png 576w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qt-install-300x191.png 300w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/p>\n<p>Note that Msys2 automatically puts \/usr\/local\/bin in the PATH. It&#8217;s just not polite though.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3508\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-path-1.png\" alt=\"msys2 path image\" width=\"463\" height=\"357\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-path-1.png 463w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-path-1-300x231.png 300w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/><\/p>\n<p>You have to edit your .bash_profile<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3509\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-bash_profile-1.png\" alt=\"bash_profile image\" width=\"637\" height=\"206\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-bash_profile-1.png 637w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-bash_profile-1-300x97.png 300w\" sizes=\"(max-width: 637px) 100vw, 637px\" \/><\/p>\n<p>Things get better after you close your terminal window and open another.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3510\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qmake.png\" alt=\"image after qmake\" width=\"584\" height=\"370\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qmake.png 584w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-after-qmake-300x190.png 300w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3511\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-keypress-after-make.png\" alt=\"after make image\" width=\"584\" height=\"370\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-keypress-after-make.png 584w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-keypress-after-make-300x190.png 300w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3512\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-success.png\" alt=\"msys2 success image\" width=\"157\" height=\"74\" \/><\/p>\n<p>It runs really really slow launched from the command line like that. (Probably doesn&#8217;t help being in a 2 CPU VM!) Yes, I could probably fix my Windows environment to make things better, but that wasn&#8217;t the point of this exercise. There for everyone to see is the release message from NumLock having been pressed.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I went down this road because I wanted to compile one simple test program so I could file a bug with GnuEmacs about how they don&#8217;t catch NumLock. This is a really old bug and they seem willing to let it rot until computers cease to exist. My test program was a KeyEvent example I stole from online then added support for NumLock. It took longer to scrape from the Internet than it did to &hellip; <a title=\"Compiling Qt 5.14 Under Msys2\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/\"><span class=\"screen-reader-text\">Compiling Qt 5.14 Under Msys2<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[1504,1830,53,1829,159],"class_list":["post-3503","post","type-post","status-publish","format-standard","hentry","category-information-technology","tag-c","tag-gnuemacs","tag-linux","tag-msys2","tag-qt","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here&#039;s how\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here&#039;s how\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-02T16:47:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"Compiling Qt 5.14 Under Msys2\",\"datePublished\":\"2020-04-02T16:47:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/\"},\"wordCount\":824,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/msys2-prompt-qt.png\",\"keywords\":[\"C++\",\"GnuEmacs\",\"Linux\",\"msys2\",\"Qt\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/\",\"name\":\"Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/msys2-prompt-qt.png\",\"datePublished\":\"2020-04-02T16:47:46+00:00\",\"description\":\"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here's how\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/msys2-prompt-qt.png\",\"contentUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/msys2-prompt-qt.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/compiling-qt-5-14-under-msys2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Compiling Qt 5.14 Under Msys2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog","description":"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here's how","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/","og_locale":"en_US","og_type":"article","og_title":"Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog","og_description":"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here's how","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/","og_site_name":"Logikal Blog","article_published_time":"2020-04-02T16:47:46+00:00","og_image":[{"url":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png","type":"","width":"","height":""}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"Compiling Qt 5.14 Under Msys2","datePublished":"2020-04-02T16:47:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/"},"wordCount":824,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#primaryimage"},"thumbnailUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png","keywords":["C++","GnuEmacs","Linux","msys2","Qt"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/","name":"Compiling Qt 5.14 Under Msys2 &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#primaryimage"},"thumbnailUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png","datePublished":"2020-04-02T16:47:46+00:00","description":"Building Qt 5 under Msys2 is not well documented. I assume this is because they want you to buy a commercial license instead of using OpenSource. Here's how","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#primaryimage","url":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png","contentUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/04\/msys2-prompt-qt.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/compiling-qt-5-14-under-msys2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Compiling Qt 5.14 Under Msys2"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3503"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3503\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}