{"id":527,"date":"2016-03-10T02:26:30","date_gmt":"2016-03-10T02:26:30","guid":{"rendered":"http:\/\/fractorium.com\/?page_id=527"},"modified":"2025-03-25T16:48:34","modified_gmt":"2025-03-25T16:48:34","slug":"building-on-windows","status":"publish","type":"page","link":"http:\/\/fractorium.com\/?page_id=527","title":{"rendered":"Building on Windows"},"content":{"rendered":"<p>This is the guide for building on Windows using either Visual Studio 2022 or Qt Creator<\/p>\n<h3 class=\"collapseomatic \" id=\"id6a3d0550de42b\"  tabindex=\"0\"     >Tools<\/h3><div id=\"target-id6a3d0550de42b\" class=\"collapseomatic_content \">\n<h4>git<\/h4>\n<p style=\"padding-left: 30px;\">Install\u00a0<a href=\"https:\/\/git-scm.com\/downloads\">git<\/a>.<\/p>\n<h4>Visual Studio<\/h4>\n<p style=\"padding-left: 30px;\">Install <a href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\">Microsoft Visual Studio 2022 or later<\/a>, then install the latest updates.<\/p>\n<h4>Qt<\/h4>\n<p style=\"padding-left: 30px;\">Install <a href=\"https:\/\/www.qt.io\/download-dev\">Qt for Windows 64-bit<\/a><\/p>\n<p style=\"padding-left: 30px;\">Add system environment variable named <code>QTPATH<\/code> and point it to the location of the Qt folder. On a default install, this will be something like:<\/p>\n<pre style=\"padding-left: 30px;\">C:\\Qt\\6.5.1\\msvc2019_64<\/pre>\n<h4>Wix<\/h4>\n<p style=\"padding-left: 30px;\">To build the installer, you must have Wix installed. If you are unconcerned with it, you can skip this step and just dismiss the warning that shows when opening the solution later. It&#8217;s recommended you ignore the installer since official builds are provided on this page.<\/p>\n<h4>CMake<\/h4>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/cmake.org\/download\/\" target=\"_blank\" rel=\"noopener\">Download<\/a> and be sure to check the option to add it to the system path.<\/p>\n<\/div>\n<h3 class=\"collapseomatic \" id=\"id6a3d0550de62e\"  tabindex=\"0\"     >Obtaining source<\/h3><div id=\"target-id6a3d0550de62e\" class=\"collapseomatic_content \">\n<h4>This project<\/h4>\n<p style=\"padding-left: 30px;\">Open up the Visual Studio x64 Native Tools Command Prompt.<\/p>\n<p style=\"padding-left: 30px;\">Create a new folder in your development area named fractorium:<\/p>\n<pre style=\"padding-left: 30px;\">mkdir fractorium<\/pre>\n<pre style=\"padding-left: 30px;\">cd fractorium<\/pre>\n<pre style=\"padding-left: 30px;\">git clone https:\/\/mfeemster@bitbucket.org\/mfeemster\/fractorium.git<\/pre>\n<h4>Prerequisites<\/h4>\n<p style=\"padding-left: 30px;\">There are six prerequisite dependencies. One of them must be downloaded manually:<\/p>\n<p style=\"padding-left: 30px;\">Download the libjpeg zip file <a href=\"http:\/\/www.ijg.org\/\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p style=\"padding-left: 30px;\">Extract it into the folder you created such that they are arranged like so:<\/p>\n<pre style=\"padding-left: 30px;\">[fractorium]\n \u2502\n \u251c\u2500libjpeg\n<\/pre>\n<p style=\"padding-left: 30px;\">Go into the fractorium folder and run this script which will get the rest of the prerequisites from git and build them:<\/p>\n<pre style=\"padding-left: 30px;\">cd fractorium<\/pre>\n<pre style=\"padding-left: 30px;\">makedeps.bat<\/pre>\n<p style=\"padding-left: 30px;\">This will download and build<\/p>\n<pre style=\"padding-left: 30px;\">glm libopenexr libpng libxml zlib<\/pre>\n<p style=\"padding-left: 30px;\">You will have a folder structure like this:<\/p>\n<pre>[fractorium]\n\u2502\n\u251c\u2500[glm]\n\u251c\u2500[libjpeg]\n\u251c\u2500[libpng]\n\u251c\u2500[libxml2]\n\u251c\u2500[openexr]\n\u2514\u2500[fractorium]\n--\u2502\n--\u2514\u2500[Deps]\n----\u2502\n----\u251c\u2500Iex-3_1.dll\n----\u251c\u2500IlmThread-3_1.dll\n----\u251c\u2500IMath-3_1.dll\n----\u251c\u2500libxml2.dll\n----\u251c\u2500OpenEXR-3_1.dll\n----\u251c\u2500Iex-3_1.lib\n----\u251c\u2500IlmThread-3_1.lib\n----\u251c\u2500Imath-3_1.lib\n----\u251c\u2500libjpeg.lib\n----\u251c\u2500libpng.lib\n----\u251c\u2500libxml2.lib\n----\u251c\u2500OpenEXR-3_1.lib\n----\u251c\u2500OpenEXRCore-3_1.lib\n----\u251c\u2500OpenEXRUtil-3_1.lib\n----\u251c\u2500zlib.lib<\/pre>\n<\/div>\n<h3 class=\"collapseomatic \" id=\"id6a3d0550de75b\"  tabindex=\"0\"     >Building with Qt Creator or Visual Studio<\/h3><div id=\"target-id6a3d0550de75b\" class=\"collapseomatic_content \">\n<h4>Begin build with Qt Creator<\/h4>\n<p style=\"padding-left: 30px;\">Open the Qt Project <code>fractorium\/main.pro<\/code> using Qt Creator with the default configuration of <code>Desktop Qt [version] MSVC[VS version] 64bit<\/code>.<\/p>\n<p style=\"padding-left: 30px;\">Make sure <code>Shadow build<\/code> in <code>Edit build configuration<\/code> for both <code>Debug<\/code> and <code>Release<\/code> is unchecked.<\/p>\n<p style=\"padding-left: 30px;\">Switch to the <code>Release<\/code> configuration.<\/p>\n<p style=\"padding-left: 30px;\">Under <code>Build Steps<\/code>, add an additional argument of <code>install<\/code> to the <code>make<\/code> command to force all dependencies to be copied to the output folder. The final make command should look like:<\/p>\n<pre style=\"padding-left: 30px;\">jom.exe install in \/path\/to\/fractorium<\/pre>\n<p style=\"padding-left: 30px;\">Ensure all projects are in the <code>Release<\/code> configuration and build <code>main.pro<\/code>.<\/p>\n<p style=\"padding-left: 30px;\">The outputs will be placed in <code>fractorium\/Bin\/release<\/code> several minutes later if no errors occur.<\/p>\n<h4>Begin build with Visual Studio<\/h4>\n<h5 style=\"padding-left: 30px;\">Visual Studio Qt Addon<\/h5>\n<p style=\"padding-left: 60px;\">Install the <a href=\"http:\/\/www.qt.io\/download\/\">Visual Studio Qt Addon<\/a>.<\/p>\n<p style=\"padding-left: 60px;\">Run Visual Studio and verify there is a menu item named <code>Qt6<\/code>. Click on it and click <code>Qt Options<\/code>.<\/p>\n<p style=\"padding-left: 60px;\">Add a new Qt version to the list with the exact name of <code>\"Qt6\"<\/code>, and set its path to the same as <code>$QTPATH<\/code>, which will be something like:<\/p>\n<pre style=\"padding-left: 60px;\">C:\\Qt\\6.5.1\\msvc2019_64<\/pre>\n<p style=\"padding-left: 60px;\">The name <code>\"Qt6\"<\/code> must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.<\/p>\n<p style=\"padding-left: 60px;\">Set the default version to the newly created Qt version and click <code>Ok<\/code>.<\/p>\n<p style=\"padding-left: 30px;\">Open the file <code>Fractorium.sln<\/code> under <code>Builds\/MSVC\/[VS version]<\/code><\/p>\n<p style=\"padding-left: 30px;\">Set the configuration to <code>Release<\/code>, and build all.<\/p>\n<p style=\"padding-left: 30px;\">The outputs will be placed in <code>fractorium\/Bin\/x64\/Release<\/code> several minutes later if no errors occur.<\/p>\n<\/div>\n<h3 class=\"collapseomatic \" id=\"id6a3d0550de876\"  tabindex=\"0\"     >Outputs<\/h3><div id=\"target-id6a3d0550de876\" class=\"collapseomatic_content \">\n<p>The outputs will be the same whether Visual Studio or Qt Creator was used, however their locations will be different.<\/p>\n<p>Qt Creator will place its outputs in:<\/p>\n<pre>fractorium\/Bin\/Release<\/pre>\n<p>and Visual Studio will place its outputs in:<\/p>\n<pre>fractorium\/Bin\/x64\/Release<\/pre>\n<p>The output contents will be:<\/p>\n<pre>Amphibole_Supergroup.ugr\nApatite_Supergroup.ugr\nboxtail_pack_02.gradient\nboxtail_pack_03_triangle.gradient\nboxtail_pack_04_mineshack.gradient\nconcrt140.dll\ndark_windows.qss\nEmber.dll\nEmberAnimate.exe\nEmberCL.dll\nEmberGenome.exe\nEmberRender.exe\nfardareismai_pack_01_variety_number_128.gradient\nfardareismai_pack_02_b_sides.gradient\nfardareismai_pack_03_old_and_new.gradient\nfardareismai_pack_04_hoard.gradient\nFeldspar_Group.ugr\nflam3-palettes.xml\nfractaldesire_pack_01.gradient\nFractorium.exe\nIex-3_1.dll\nIlmThread-3_1.dll\nImath-3_1.dll\nlibxml2.dll\nlightdark.qss\nMica_Group.ugr\nmsvcp140.dll\nOpenEXR-3_1.dll\nQt6Core.dll\nQt6Gui.dll\nQt6OpenGL.dll\nQt6OpenGLWidgets.dll\nQt6Widgets.dll\nQuartz_Varieties.ugr\nrce_ordinary_pack_01_colornation.gradient\ntatasz_pack_01.gradient\ntatasz_pack_02_colder.gradient\ntatasz_pack_02_dark.gradient\ntatasz_pack_02_warmer.gradient\ntatasz_pack_03.gradient\ntatasz_pack_04.gradient\ntatasz_pack_05.gradient\ntatasz_pack_06.gradient\ntatasz_pack_07.gradient\nuranium.qss\nuser-palettes.xml\nvccorlib140.dll\nvcruntime140.dll\nvcruntime140_1.dll\nimageformats\\qjpeg.dll\nplatforms\\qwindows.dll<\/pre>\n<p>Double click <code>fractorium.exe<\/code> to run it, and use the command line to run the others.<\/p>\n<p>To run on a computer without Visual Studio 2022, these files also need to be in the folder:<\/p>\n<pre>C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\msvcp140.dll\nC:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\vcruntime140.dll\nC:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\vcruntime140_1.dll\nC:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\vccorlib140.dll\nC:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\concrt140.dll<\/pre>\n<p>or you can install <a href=\"https:\/\/learn.microsoft.com\/en-us\/cpp\/windows\/latest-supported-vc-redist\">Visual C++ Redistributable Packages for Visual Studio<\/a><\/p>\n<\/div>\n<h3 class=\"collapseomatic \" id=\"id6a3d0550de963\"  tabindex=\"0\"     >Final file structure for distribution<\/h3><div id=\"target-id6a3d0550de963\" class=\"collapseomatic_content \">\n<pre><span class=\"na\">[YOUR FOLDER]\n\u2502\n\u251c\u2500Amphibole_Supergroup.ugr\n\u251c\u2500Apatite_Supergroup.ugr\n\u251c\u2500boxtail_pack_02.gradient\n\u251c\u2500boxtail_pack_03_triangle.gradient\n\u251c\u2500boxtail_pack_04_mineshack.gradient\n\u251c\u2500dark_windows.qss\n\u251c\u2500Ember.dll\n\u251c\u2500EmberAnimate.exe\n\u251c\u2500EmberCL.dll\n\u251c\u2500EmberGenome.exe\n\u251c\u2500EmberRender.exe\n\u251c\u2500fardareismai_pack_01_variety_number_128.gradient\n\u251c\u2500fardareismai_pack_02_b_sides.gradient\n\u251c\u2500fardareismai_pack_03_old_and_new.gradient\n\u251c\u2500fardareismai_pack_04_hoard.gradient\n\u251c\u2500Feldspar_Group.ugr\n\u251c\u2500flam3-palettes.xml\n\u251c\u2500fractaldesire_pack_01.gradient\n\u251c\u2500Fractorium.exe\n\u251c\u2500Iex-3_1.dll\n\u251c\u2500IlmThread-3_1.dll\n\u251c\u2500Imath-3_1.dll\n\u251c\u2500libxml2.dll\n\u251c\u2500lightdark.qss\n\u251c\u2500Mica_Group.ugr\n\u251c\u2500OpenEXR-3_1.dll\n\u251c\u2500Qt6Core.dll\n\u251c\u2500Qt6Gui.dll\n\u251c\u2500Qt6OpenGL.dll\n\u251c\u2500Qt6OpenGLWidgets.dll\n\u251c\u2500Qt6Widgets.dll\n\u251c\u2500Quartz_Varieties.ugr\n\u251c\u2500rce_ordinary_pack_01_colornation.gradient\n\u251c\u2500tatasz_pack_01.gradient\n\u251c\u2500tatasz_pack_02_colder.gradient\n\u251c\u2500tatasz_pack_02_dark.gradient\n\u251c\u2500tatasz_pack_02_warmer.gradient\n\u251c\u2500tatasz_pack_03.gradient\n\u251c\u2500tatasz_pack_04.gradient\n\u251c\u2500tatasz_pack_05.gradient\n\u251c\u2500tatasz_pack_06.gradient\n\u251c\u2500tatasz_pack_07.gradient\n\u251c\u2500uranium.qss\n\u251c\u2500user-palettes.xml\n\u251c\u2500msvcp140.dll (optional)\n\u251c\u2500vcruntime140.dll (optional)\n\u251c\u2500vcruntime140_1.dll (optional)\n\u251c\u2500vccorlib140.dll (optional)\n\u251c\u2500concrt140.dll (optional)\n\u2502\n\u2514\u2500[imageformats]\n--|\n--\u251c\u2500qjpeg.dll\n--\u2514\u2500[platforms]\n----\u2502\n----\u251c\u2500qwindows.dll\n<\/span><\/div><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This is the guide for building on Windows using either Visual Studio 2022 or Qt Creator<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":63,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-527","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/pages\/527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/fractorium.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=527"}],"version-history":[{"count":62,"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/pages\/527\/revisions"}],"predecessor-version":[{"id":2490,"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/pages\/527\/revisions\/2490"}],"up":[{"embeddable":true,"href":"http:\/\/fractorium.com\/index.php?rest_route=\/wp\/v2\/pages\/63"}],"wp:attachment":[{"href":"http:\/\/fractorium.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}