Step-by-step: How to build EmulationStation on Windows
-
@fieldofcows : Hey, I'm still running cmake for ES at the moment, but I just wanted to let you know that after cloning your ES repo, you need to create the build directory inside that newly downloaded EmulationStation directory, then call the long cmake command from there.
It's kinda obvious, but easy to miss if you are just copy pasting the commands to the command prompt.Apart from that, everything is going swell!
[Edit: And the debug version is running! I can't believe this! I finally got out of this dependency hell! Thank you, I owe you a beer!]
-
@Zigurana Yay! It works! Thanks for pointing out the error. I've edited it in the first post.
Did you manage to copy the dependent DLLs ok? By the time I was writing that bit up it was after midnight and I was working in Linux from memory so it's a bit vague.
-
Thanks to all and thanks for the notepad(++) suggestion... haha my bad I was not specific with my question. I thought there was an easy way than notepad(++).
So I guess Visual Studio it is.I'm not a c++ developer but I know a little about it. What I'm trying to achieve might not be possible.
What I'm really trying to do is make emulation station accept html/css/javascript codes.
So it would be easy for us to change theme. As in change all the designs the easy way. Not just color or background. And there are a lot of javascript plugins around free to download.I was thinking of using nodejs + ejs. I'm still reading through chromium embedded framework. CEF has chromium inside it, much like google chrome. With this it would be easy for us to just throw in html/css/javascript templates. And with javascript or css3, imagine the animations we could do.
Outside ES, with this idea, using node-webkit , I was able to replicate hyperspin (frontend only) on my Windows machine (I have not tried but I'm sure it would also run on Linux). But my target is raspberry pi. node-webkit can't be opened on a lite raspbian which is too bad. It says GTK error, cannot open window* haha.
So with that I'm back to editing ES. But a novice like me on C++ this would take time. Good luck to me.
-
This was an awesome guide! One caveat I found - building emulationstation in VS ran into linker errors, but once I added /FORCE:MULTIPLE to the linker options (of the emulationstation project!) it built with no problems.
-
""Allow Visual Studio to convert project to 2015"". In this section, i need a detalied explanation how to convert. I am noob , so can you explain step by step how to convert the project to 2015?
-
@TheRealFox Just open the project in Visual Studio. It will pop up a box saying that the project is for an old version of visual studio and ask you if you want to update it. Just say yes and it should load and build ok.
-
great work
-
@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."
-
@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. " -
@fieldofcows there are 3 files named freeimage.2013, but i dont noticed the file with the extension .sln.
-
@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?
-
@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" -
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"
-
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 -
@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
#define
you 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.
-
@Zigurana said in Step-by-step: How to build EmulationStation on Windows:
Whoah! Hold your horses!
-
@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.
-
@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.
-
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.
-
@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.
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.