Fastbuild all work for static linking

Need : Dll for game and lib to do hot reload
Need : static for release only
Way to compile only julietapp only shader app, only juliet.dll and game.dll
This commit is contained in:
2026-01-07 19:46:12 -05:00
parent bfd3648344
commit 1137466472
10 changed files with 186 additions and 21 deletions

102
JulietApp/JulietApp.bff Normal file
View File

@@ -0,0 +1,102 @@
// Juliet - Lib
//------------------------------------------------------------------------------
{
.ProjectName = 'JulietApp'
.ProjectPath = 'JulietApp'
.JulietIncludePath = ' "-IJuliet/include"'
.ProjectDefPath = '$_WORKING_DIR_$/$ProjectName$/$ProjectName$.def'
// Library
//--------------------------------------------------------------------------
.ProjectConfigs = {}
ForEach( .BuildConfig in .BuildConfigs )
{
Using( .BuildConfig )
.OutputBase + '\$Platform$-$BuildConfigName$'
// Unity
//--------------------------------------------------------------------------
Unity( '$ProjectName$-Unity-$Platform$-$BuildConfigName$' )
{
.UnityInputPath = '$ProjectPath$/'
.UnityOutputPath = '$OutputBase$/$ProjectPath$/'
.UnityOutputPattern = '$ProjectName$_Unity*.cpp'
}
// Library
//--------------------------------------------------------------------------
ObjectList( '$ProjectName$-Lib-$Platform$-$BuildConfigName$' )
{
// Input (Unity)
.CompilerInputUnity = '$ProjectName$-Unity-$Platform$-$BuildConfigName$'
// Extra Compiler Options
.CompilerOptions + .JulietIncludePath
#if __WINDOWS__
.CompilerOptions + ' -DJULIET_WIN32'
#endif
// Output
.CompilerOutputPath = '$OutputBase$/$ProjectPath$/'
}
// Windows Manifest
//--------------------------------------------------------------------------
#if __WINDOWS__
.ManifestFile = '$OutputBase$/$ProjectPath$/$ProjectName$$ExeExtension$.manifest.tmp'
//CreateManifest( '$ProjectName$-Manifest-$Platform$-$BuildConfigName$'
// .ManifestFile )
#endif
// Executable
//--------------------------------------------------------------------------
Executable( '$ProjectName$-Exe-$Platform$-$BuildConfigName$' )
{
.Libraries = {
'JulietApp-Lib-$Platform$-$BuildConfigName$',
'Juliet-Lib-$Platform$-$BuildConfigName$',
'Game-Lib-$Platform$-$BuildConfigName$'
}
.LinkerOutput = '$OutputBase$/$ProjectPath$/JulietApp$ExeExtension$'
// TODO : Only use when using DLL and not static link
//.LinkerOptions + ' /DEF:"$ProjectDefPath$"'
#if __WINDOWS__
.LinkerOptions + ' /SUBSYSTEM:CONSOLE'
+ ' kernel32.lib'
+ ' user32.lib'
+ ' gdi32.lib'
+ ' dxguid.lib'
+ ' Ws2_32.lib'
+ ' dxgi.lib'
//+ .CRTLibs_Static
// Chose appropriate CRT
.CRTLibs = .CRTLibs_Dynamic
If ( .BuildConfigName == 'Debug' )
{
^CRTLibs = .CRTLibs_DynamicDebug
}
.LinkerOptions + .CRTLibs
// Manifest
.LinkerAssemblyResources = .ManifestFile
.LinkerOptions + ' /MANIFEST:EMBED'
// + ' /MANIFESTINPUT:%3'
#endif
}
Alias( '$ProjectName$-$Platform$-$BuildConfigName$' ) { .Targets = '$ProjectName$-Exe-$Platform$-$BuildConfigName$' }
^'Targets_$Platform$_$BuildConfigName$' + { '$ProjectName$-$Platform$-$BuildConfigName$' }
#if __WINDOWS__
.ProjectConfig = [ Using( .'Project_$Platform$_$BuildConfigName$' ) .Target = '$ProjectName$-$Platform$-$BuildConfigName$' ]
^ProjectConfigs + .ProjectConfig
#endif
}
}