Hi Geoff,
I just got Helium to compile and run with VS2013 and the Windows 8.1 SDK. Here are the tweaks I did to get it to work:
1)
In all the premake .lua files I found all conditions related to "vs2012" and added support for "vs2013" to those conditions. This way it sets up the DX SDK and d3dx library dependencies like it does with vs2012. This is a temporary solution until I get around to removing the d3dx library references.
2)
In ProcessWin.cpp it has a call to the function GetVersionEx. This has been deprecated in the Windows 8 SDK.
So, I changed this:
OSVERSIONINFO osvi;
memset(&osvi, 0, sizeof( OSVERSIONINFO ) );
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
::GetVersionEx(&osvi);
if ( osvi.dwMajorVersion == 6 && ( osvi.dwMinorVersion == 0 || osvi.dwMinorVersion == 1 ) ) // vista and 7
{
// windows vista and beyond somtimes have system software that attach child processes to jobs,
// and pre-windows 8 you can only attach a process to a single job
flags |= CREATE_BREAKAWAY_FROM_JOB;
}
To this:
#include <VersionHelpers.h>
if ( IsWindowsVistaOrGreater() && !IsWindows8OrGreater() )
{
// windows vista and beyond somtimes have system software that attach child processes to jobs,
// and pre-windows 8 you can only attach a process to a single job
flags |= CREATE_BREAKAWAY_FROM_JOB;
}
3)
In fbxarch.h (part of the FBX SDK), it uses a macro called WINAPI_FAMILY_ONE_PARTITION, which has also been deprecated.
#if defined(WINAPI_FAMILY)
#if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
#define FBXSDK_ENV_WINSTORE 1
#endif
#endif
#if defined(WINAPI_FAMILY)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define FBXSDK_ENV_WINSTORE 1
#endif
#endif
4)
There isn't currently a vs2013 version of the FBX libs, so I manually copy-pasted the vs2012 directory as follows:
C:\Program Files\Autodesk\FBX\FBX SDK\2014.2\lib\vs2012
to
C:\Program Files\Autodesk\FBX\FBX SDK\2014.2\lib\vs2013
5)
I checked the perforce ftp site and they don't currently have a vs2013 binary of the p4api, and when I tried to use the vs2012 binary it threw an error about _MSC_VER being the wrong version. So, I excluded all the PerforceX.cpp and PerforceX.h files from the Editor project and commented out all references to perforce from the editor code. I did this in a fairly surgical way so that the editor still functions as normal, just without the P4 features. It seems to be working ok.
Once I did all that it compiled and ran the example games and editor just fine. It might make sense to make a new preprocessor macro called HELIUM_P4_ENABLED or something like that and conditionally include the perforce related headers based on the value of that macro and wrap the code related to the perforce editor features in a condition based on that macro. This way P4 becomes a truly optional feature where we can disable/enable the library dependency and associated features by essentially flipping a switch. Once they release a new version of the p4api that supports vs2013 then it won't be an issue anymore anyway, I suppose.
Thanks,
John
On Saturday, November 30, 2013 11:53:11 PM UTC-8, John Hahn wrote: