RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Step-by-step: How to build EmulationStation on Windows

    Scheduled Pinned Locked Moved Ideas and Development
    emulationstatiobuildingwindows
    108 Posts 22 Posters 83.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      binpaxjunk
      last edited by

      great work

      1 Reply Last reply Reply Quote 0
      • T
        TheRealFox @fieldofcows
        last edited by

        @fieldofcows The Project doesnt ask. I saw it also on a note at microsoft site: " If you decline the update when you're first prompted, you can update the project later by choosing Update VC++ project on the Project menu. If the command doesn't appear, then an update isn't required."

        T Z 2 Replies Last reply Reply Quote 0
        • T
          TheRealFox @fieldofcows
          last edited by TheRealFox

          @fieldofcows I see this also at microsoft site, that the conversion in some cases are not necessary. Check this: " If the project (.vcxproj) was created in Visual Studio 2010, Visual Studio 2012, or Visual Studio 2013 you have two options:
          You can skip the update. Visual Studio 2015 will load the project without making any changes if it has access to the Visual C++ tools in Visual Studio 2010 with SP1, Visual Studio 2012, or Visual Studio 2013. You can provide this access by installing the version of Visual Studio that the project was created with on the same machine that has Visual Studio 2015. For more information, see Installing Visual Studio Versions Side-by-Side. "

          1 Reply Last reply Reply Quote 0
          • T
            TheRealFox @fieldofcows
            last edited by TheRealFox

            @fieldofcows there are 3 files named freeimage.2013, but i dont noticed the file with the extension .sln.

            1 Reply Last reply Reply Quote 0
            • T
              TheRealFox @TheRealFox
              last edited by TheRealFox

              @TheRealFox lol..updating my situation..i found freeimage.2013.sln..when i opened this file, he starts to parsing the pages , but dont ask for update. When i clicked on debbug , the VS tells that the file are out dated. This was the asking you say above?

              1 Reply Last reply Reply Quote 0
              • T
                TheRealFox @fieldofcows
                last edited by TheRealFox

                @fieldofcows, i get this when i finish the debbug: " 1> c:\src\lib\freeimage\source\libtiff4\tif_config.h(84): note: see previous definition of 'snprintf'
                1>c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\stdio.h(1927): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration"

                1 Reply Last reply Reply Quote 0
                • T
                  TheRealFox
                  last edited by TheRealFox

                  said in Step-by-step: How to build EmulationStation on Windows:

                  Edit tif_config.h to remove #define snprintf _snprintf

                  The post lack of detailed information for noobs like me. That is my situation: How I do that: "Edit tif_config.h to remove #define snprintf _snprintf"

                  fieldofcowsF 1 Reply Last reply Reply Quote 0
                  • T
                    TheRealFox
                    last edited by TheRealFox

                    That folders below? I have to make them in c:\ ?

                    Unzip to c:\src\lib\boost_1_61_0
                    Unzip to c:\src\lib\eigen
                    Unzip to c:\src\lib\FreeImage
                    Extract to c:\src\lib\freetype-2.7
                    Unzip to c:\src\lib\curl-7.50.3
                    Extract to c:\src\lib\libvlc-2.2.2
                    Extract to c:\src\lib\SDL2-2.0.5

                    1 Reply Last reply Reply Quote 0
                    • Z
                      Zigurana @TheRealFox
                      last edited by

                      @TheRealFox @TheRealFox @TheRealFox @TheRealFox @TheRealFox @TheRealFox
                      Whoah! Hold your horses!
                      (You realize that since this is a global forum, people might actually be sleeping while you are posting, right?)

                      To be able to help you, we need some more information.

                      • what version of VS are you using?
                      • is it a fresh installation of VS or have you configured it before?

                      Some answers :

                      • To remove the line about the #defineyou simply remove the line (s) , save the file, build.
                      • You do not have to create all those directories in C:, as long as you remember where you put them, and adjust the location later when you call make.

                      If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                      lilbudL 1 Reply Last reply Reply Quote 1
                      • lilbudL
                        lilbud @Zigurana
                        last edited by

                        @Zigurana said in Step-by-step: How to build EmulationStation on Windows:

                        Whoah! Hold your horses!

                        0_1480177437511_upload-5597cf58-c39d-46eb-a3a0-deb0de4415dc

                        Creator of the Radiocade: https://retropie.org.uk/forum/topic/6077/radiocade

                        Backlog: http://backloggery.com/lilbud

                        1 Reply Last reply Reply Quote 1
                        • fieldofcowsF
                          fieldofcows @TheRealFox
                          last edited by

                          @TheRealFox said in Step-by-step: How to build EmulationStation on Windows:

                          The post lack of detailed information for noobs like me. That is my situation: How I do that: "Edit tif_config.h to remove #define snprintf _snprintf"

                          I put together the step-by-step by setting up a brand new VM starting with nothing installed and noted down what I did at each step. The idea was to help experienced developers to get a build environment up and running with the least pain. I know some of the steps are a bit vague and require some experience but I think you would need that experience in order to actually understand the ES code to make any meaningful modifications.

                          However, I am happy to help noobs to get going as much as I can, although trying to find time when I have three young kids and a full time job is quite hard!

                          Anyway, I hope you managed to get it building.

                          1 Reply Last reply Reply Quote 1
                          • J
                            jdrassa
                            last edited by

                            @fieldofcows Thanks for writing up this tutorial, it has inspired me to try and get a build environment up and running. I believe that I have everything setup properly and I was able to build all of the dependent libraries and use cmake to generate emulationstation-all.sln, but when I try to build ES in VS I immediately get errors because it appears to not find the boost library.

                            1>------ Build started: Project: es-core, Configuration: Release Win32 ------
                            1>  platform.cpp
                            1>  Util.cpp
                            1>C:\esdev\src\EmulationStation\es-core\src\platform.cpp(87): error C3861: 'open': identifier not found
                            1>C:\esdev\src\EmulationStation\es-core\src\platform.cpp(89): error C3861: 'close': identifier not found
                            1>C:\esdev\src\EmulationStation\es-core\src\Util.cpp(105): error C2440: 'initializing': cannot convert from 'const boost::filesystem::path::value_type *' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
                            1>  C:\esdev\src\EmulationStation\es-core\src\Util.cpp(105): note: No constructor could take the source type, or constructor overload resolution was ambiguous
                            1>C:\esdev\src\EmulationStation\es-core\src\Util.cpp(106): error C2440: 'initializing': cannot convert from 'const boost::filesystem::path::value_type *' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
                            1>  C:\esdev\src\EmulationStation\es-core\src\Util.cpp(106): note: No constructor could take the source type, or constructor overload resolution was ambiguous
                            

                            Any help you could provide would be appreciated.

                            Get latest build of EmulationStation for Windows here

                            fieldofcowsF 1 Reply Last reply Reply Quote 0
                            • K
                              kfj001
                              last edited by

                              If you're getting compilation errors due to a signature mismatch in the function definition, it's because there is an unnecessary redefinition in one of the project header files. Locate the .h file containing the definition of the offending function and comment it out, then try building again.

                              1 Reply Last reply Reply Quote 0
                              • fieldofcowsF
                                fieldofcows @jdrassa
                                last edited by

                                @jdrassa What fork of EmulationStation are you trying to build? open() and close() are not supported on Windows and boost on Windows uses wide strings in some places where Linux/Pi uses short strings. This error pops up in a few of the forks that are out there but I have fixed this in my fork: https://github.com/fieldofcows/EmulationStation.

                                See the changes to Util.cpp and platform.cpp in this commit: https://github.com/fieldofcows/EmulationStation/commit/1297107533bef0b8bb351e5d10338371de7ef436. You don't want to include the other changes from this commit to make it work.

                                J 1 Reply Last reply Reply Quote 0
                                • J
                                  jdrassa @fieldofcows
                                  last edited by

                                  @fieldofcows I was working off of the RetroPie fork. I pulled in the changes from yours and I am now able to build. Thanks.

                                  Get latest build of EmulationStation for Windows here

                                  1 Reply Last reply Reply Quote 0
                                  • Z
                                    Zigurana
                                    last edited by

                                    @fieldofcows :
                                    After pulling in the latest changes on the RetroPie/master branch, I am now trying to compile with your video-view included.
                                    When first setting up my build environment, I followed the steps you described above, and all was well.
                                    Now, after pulling in these latest changes, I re-ran the long cmake command, and tried to build.
                                    I run into the following error: in viewcontroller.cpp, line15: #include <SDL2/SDL.h>, which gives me the error: 1> ViewController.cpp 1>C:\src\EmulationStation\es-app\src\views\ViewController.cpp(15): fatal error C1083: Cannot open include file: 'SDL2/SDL.h': No such file or directory .
                                    A simple enough message to understand, why I am getting it is another matter.
                                    When I go into my C:\src\lib\SDL2-2.0.5\include folder, SDL.h is there alright.
                                    This does not match with %ES_LIB_DIR%\SDL2-2.0.5\include\SDL2\SDL.h, which I think <SDL2/SDL.h> gets translated into?
                                    Sure enough, when I change it into just #include <SDL.h> I can build just fine.

                                    I am just wondering why I need to make that change, and apparently you do not.

                                    If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                                    fieldofcowsF 1 Reply Last reply Reply Quote 0
                                    • fieldofcowsF
                                      fieldofcows @Zigurana
                                      last edited by

                                      @Zigurana - the retropie ES branch contains a couple issues that prevent it from building in Windows. I have the fixes ready which I'll submit as a PR shortly. I was building from my fork which already included the fixes. The SDL2/SDL.h include was actually added for the video view so it's my fault that the Windows build breaks here when following the instructions in this post.

                                      There are two ways to fix it. The first is to do exactly what you've done and remove the SDL2/ from the beginning. The second is to add the parent directory of SDL2 into the include path. This is what happens on the RPi and Linux. I would suggest just fixing it the way you have done for now.

                                      N 1 Reply Last reply Reply Quote 1
                                      • N
                                        Nismo @fieldofcows
                                        last edited by

                                        @fieldofcows I'm trying to compile, i had the same error than @zigurana and i made the same change for #include <SDL.h> but i still have errors and i can't compile:

                                        Error C3861 'open': can't find identifier es-core C:\src\EmulationStation\es-core\src\platform.cpp 87

                                        Error C3861 'close': can't find identifier es-core C:\src\EmulationStation\es-core\src\platform.cpp 89

                                        Error C2440 'initializating': can't do conversion of 'const boost::filesystem::path::value_type *' a 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 105

                                        Error C2440 'initializating': can't do conversion of 'const boost::filesystem::path::value_type *' a 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' es-core C:\src\EmulationStation\es-core\src\Util.cpp 106

                                        Error LNK1104 can't open file '....\Debug\es-cored.lib' emulationstation C:\src\EmulationStation\build\es-app\LINK 1

                                        I translated some error because my VS2015 is not in english language so may differ a bit.

                                        Any help would be aprecciated.

                                        fieldofcowsF 1 Reply Last reply Reply Quote 0
                                        • fieldofcowsF
                                          fieldofcows @Nismo
                                          last edited by

                                          @Nismo In addition to the SDL change, have a look at this commit to my fork:

                                          https://github.com/fieldofcows/EmulationStation/commit/59fe6a36cbafc0a94a5db8e877ad3f497c76efd5

                                          This details the changes that need to be made in order to compile the RetroPie ES for Windows.

                                          N 2 Replies Last reply Reply Quote 0
                                          • N
                                            Nismo @fieldofcows
                                            last edited by

                                            @fieldofcows Thank you i'll take a look right now.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.