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.4k 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.
    • Z
      Zigurana
      last edited by

      You are missing some dependencies, did cmake find all it needed? You are still only showing part of your output. Please use https://pastebin.com/ to show us all the output of a rebuild.

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

      1 Reply Last reply Reply Quote 0
      • R
        ray3d
        last edited by

        Here are the logs of the cmake of EmulationStation via the developer command prompt VS 2015 :

        https://pastebin.com/T4dKM21z

        And here are the logs of the VS 2015 building EmulationStation:

        https://pastebin.com/SNQW0k7J

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

          @ray3d wait, what branch are you trying to build?
          my touch() method in platform.cpp looks like:

          void touch(const std::string& filename)
          {
          #ifdef WIN32
          	FILE* fp = fopen(filename.c_str(), "ab+");
          	if (fp != NULL)
          		fclose(fp);
          #else
          	int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644);
          	if (fd >= 0)
          		close(fd);
          #endif
          }
          

          Looks like you are trying to build one of the older branches, that did not have the fixes to build on VS2015 yet.

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

          1 Reply Last reply Reply Quote 0
          • R
            ray3d
            last edited by

            I use this like the post say:

            git clone https://github.com/fieldofcows/EmulationStation.git EmulationStation

            Nothing else and my touch() in platform.cpp I have:

            • void touch(const std::string& filename)
              {
              int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644);
              if (fd >= 0)
              close(fd);
              }

            What I need to download then and from where?

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

              @ray3d I see, you are cloning fieldofcows branch then.
              Try this:
              git clone https://github.com/RetroPie/EmulationStation.git EmulationStation
              That will give you the current repository from the RetroPie branch, which you can consider the main trunk.

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

              1 Reply Last reply Reply Quote 0
              • R
                ray3d
                last edited by

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

                git clone https://github.com/RetroPie/EmulationStation.git EmulationStation

                I arrived and tested and on the cmake I have this result now. In this case not finish the cmake:

                https://pastebin.com/VyfyGMW6

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

                  @ray3d pugixml was converted to a submodule since this guide was written.

                  You will need to run

                  git submodule update --init
                  

                  to pull down the the pugixml code.

                  Just curious, are you intending to work on the code or are you just looking to get an updated build for Windows?

                  Get latest build of EmulationStation for Windows here

                  1 Reply Last reply Reply Quote 0
                  • R
                    ray3d
                    last edited by

                    jdrassa thank you for the information I want to use for my personal use and totally your command fix the issue of that library. However when I build in VS 2015 I have this log:

                    https://pastebin.com/QcXnjAd5

                    Less errors but it says there it can't generate the package or install. Now I went to configuration manager in VS 2015 in the solution and I checked the deploy on both because both were unchecked. But after check I have this log with worst quantity of errors:

                    https://pastebin.com/uEgii9va

                    What could be now?

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

                      @ray3d The line below is your current error. Either freetype didn't build properly or the path is configured wrong.

                      5>LINK : fatal error LNK1104: cannot open file 'c:\src\lib\freetype-2.7\objs\vc2010\Win32\freetype27.lib'
                      

                      Do you intend to modify the code at all? If not, you can download a windows build here. These builds are automatically generated whenever the RetroPie repository is updated.

                      Get latest build of EmulationStation for Windows here

                      1 Reply Last reply Reply Quote 0
                      • R
                        ray3d
                        last edited by

                        Yes I know there is a compiled version but I want to use to modify in future maybe and learn about the code.

                        I checked the directory of freetype I have this inside: freetype27d.lib with "d" I build exactly like post say is strange because there are no errors on building freetype on VS2015.
                        Any idea of what happens here?

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

                          @ray3d A quick google search indicates that the 'd' indicates that the lib file is a debug build.

                          The instructions above indicate that you should be running a debug and release build for most of the dependencies.

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

                          FreeType:
                          http://download.savannah.gnu.org/releases/freetype/freetype-2.7.tar.gz
                          Extract to c:\src\lib\freetype-2.7
                          Open C:\src\lib\freetype-2.7\builds\windows\vc2010\freetype.sln i VS
                          Allow VS to convert project to 2015
                          Build Debug | Win32
                          Build Release | Win32

                          You should look them over again to make sure you didn't miss any additional steps.

                          Get latest build of EmulationStation for Windows here

                          1 Reply Last reply Reply Quote 0
                          • R
                            ray3d
                            last edited by

                            Thank you jdrassa that was the problem thank you for the links now is working everything.

                            Zigurana thank you for the link also the first problem was the version and your link worked

                            Thank you for the help now is time to play :)

                            mituM 1 Reply Last reply Reply Quote 1
                            • T
                              ThatCoder
                              last edited by

                              Praying for a visit from the trusted and true coders that have compiled on Windows.

                              I'm compiling the code, followed every step, Tried compiling the Original, RetrpPie, FieldOfCows and still the same error when it comes to the emulationstation build itself, es_core and the others build, which some had more errors which I fix but this one since I haven't worked with Boost much is puzzling me.

                              With linking boost, It tells me there is one or more Multiply defined symbols found. I removed Libs and gives me an error for libs, I removed the DLL's and it tells me to add DLL's back.

                              It's probably something really simple but maybe the lack of sleep is killing it?

                              My system specs
                              Windows 10 Pro x64
                              VS 2015 & VS 2017 (Ent Versions)
                              i7 8700K w/ 64gigs ram

                              Error copied:

                              Severity	Code	Description	Project	File	Line	Suppression State
                              Error	LNK2005	"public: class boost::filesystem::path & __thiscall boost::filesystem::path::operator/=(class boost::filesystem::path const &)" (??_0path@filesystem@boost@@QAEAAV012@ABV012@@Z) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: static class std::codecvt<wchar_t,char,struct _Mbstatet> const & __cdecl boost::filesystem::path::codecvt(void)" (?codecvt@path@filesystem@boost@@SAABV?$codecvt@_WDU_Mbstatet@@@std@@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class boost::filesystem::path __thiscall boost::filesystem::path::extension(void)const " (?extension@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class boost::filesystem::path __thiscall boost::filesystem::path::filename(void)const " (?filename@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const __thiscall boost::filesystem::path::generic_string(void)const " (?generic_string@path@filesystem@boost@@QBE?BV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: static class std::locale __cdecl boost::filesystem::path::imbue(class std::locale const &)" (?imbue@path@filesystem@boost@@SA?AVlocale@std@@ABV45@@Z) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class boost::filesystem::path & __thiscall boost::filesystem::path::make_preferred(void)" (?make_preferred@path@filesystem@boost@@QAEAAV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class boost::filesystem::path __thiscall boost::filesystem::path::parent_path(void)const " (?parent_path@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK2005	"public: class boost::filesystem::path __thiscall boost::filesystem::path::stem(void)const " (?stem@path@filesystem@boost@@QBE?AV123@XZ) already defined in boost_filesystem-vc140-mt-1_61.lib(boost_filesystem-vc140-mt-1_61.dll)	emulationstation	C:\src\EmulationStation\es-app\libboost_filesystem-vc140-mt-1_61.lib(path.obj)	1	
                              Error	LNK1169	one or more multiply defined symbols found	emulationstation	C:\src\EmulationStation\Release\emulationstation.exe	1	
                              
                              

                              Questions I see asked with my answers:

                              1. Do I want to make changes: YES
                              2. What Changes?
                                A. Easier translations to other languages, Not just 1 language for the entire build
                                B. Easier compiling to windows
                                C. Making APP config easier going forward. Allowing a possible master config that allows paths to be changed to other configs with possible encryption for custom builds people make for customers.
                                D. Graphical Changes for templates
                                E. Custom ES boot options to give it a face lift.
                                F. Work on a type of plugin option.
                                G. Create a unique FTP server built in to ES that uses ROM path as the default location so we can enable transfers to upload games with ease.

                              Thanks for your time guys and gals and I am hoping this isn't some crazy ordeal.

                              Brad

                              f.carusoF J 2 Replies Last reply Reply Quote 0
                              • mituM
                                mitu Global Moderator @ray3d
                                last edited by

                                @ray3d There's a pre-compiled version on https://github.com/jrassa/EmulationStation/releases, which is based on RetroPie's fork and includes - I think - the modifications for video preview.

                                1 Reply Last reply Reply Quote 0
                                • f.carusoF
                                  f.caruso @ThatCoder
                                  last edited by

                                  @ThatCoder Boost is no longer used in Retropie, Jrassa's fork, and mine. (It is still used in FieldOfCows and Aloshi but these are very obsolete)
                                  You shouldn't have these errors with the forks I named.

                                  Also, concerning your needs, have a look at my Fork at https://github.com/fabricecaruso/EmulationStation :
                                  A : ready (french/spanish available).
                                  B : see my previous comments.
                                  C : my version is portable, you don't need to change paths in this case : they are relatives.
                                  D : I did a lot of things concerning theming. See my videos on youtube ( https://www.youtube.com/channel/UCCjjFNdcaI4P5NAmwrdX_-g )
                                  E : Same.
                                  F : you have scripting support in all versions to do that kind of stuff.
                                  G : Honestly doing that kind of thing would make ES... doing illegal stuff...

                                  Regards

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

                                    @mitu - Thanks

                                    @f-caruso - I'll check out your fork and report back.

                                    Just a couple notes:

                                    • Enabling a FTP server inside an application isn't illegal. The files you may upload to the software may be but the application itself is not. On top of that, I am not looking to enable Remote Streaming (Like Netflix) or FileDownload which allows streaming or download of items to that box. What I plan on doing is allowing anyone on the same network that the RetroBox resides on to connect to ftp://ESRetroBox/Roms (like a Cisco Client or BeyondTrust/Bomgar Access Terminal) and upload their ROMs via their own network without the need of USB/Port Drive copy/move. I am not sure if a Refresh is already setup for the Roms folder but if it's not then I will add a Auto Refresh of ROMs and a force Refresh option via (key) so after the upload, the application can generate a new list and one does not need to quit ES.

                                    • Spanish/French/English is nice but Chinese, Russian, German and other languages are left out. I am looking to create a solution that enables a **.lang file of sorts so more people can run the software in their native language without having to compile the code over and over - changing the language of the whole app just to understand it.

                                    I want to take the application from a basement project to a project that gets placed on the shelf as a top tier project that competes with Hyperspin, especially seeing the potential it has.

                                    Thanks,
                                    Brad

                                    f.carusoF 1 Reply Last reply Reply Quote 0
                                    • f.carusoF
                                      f.caruso @ThatCoder
                                      last edited by f.caruso

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

                                      Chinese, Russian, German

                                      I'm sorry if I can't speak those languages.. ;-) lol
                                      Localisation is based on .po files, anybody can edit or add new languages.

                                      Enabling a FTP server inside an application isn't illegal.

                                      Absolutely, as long as it is not a public share... In this case, doin' it via a set of http apis (rest) will be far easier that with FTP : there is already http classes in EmulationStation (using curl, used 4 scrappers).

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

                                        @ThatCoder Where do you plan to run this modified version of ES? Windows? RetroPie?

                                        Get latest build of EmulationStation for Windows here

                                        1 Reply Last reply Reply Quote 0
                                        • pablokk4P
                                          pablokk4
                                          last edited by

                                          Helo, first, i want to say "amazing tutorial" but i have one question: What i have to do here?
                                          Build Debug | Win32
                                          Build Release | Win32
                                          save or what?
                                          thank you very much

                                          1 Reply Last reply Reply Quote 0
                                          • pablokk4P
                                            pablokk4
                                            last edited by

                                            My principal reason is to translate ES to Spanish on Windows, only for that

                                            mituM 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.