// Romeo - Documentation Tool executable //------------------------------------------------------------------------------ { .ProjectName = 'Romeo' .ProjectPath = 'Romeo' .ProjectConfigsRomeo = {} .JulietIncludePath = ' "-IJuliet/include"' + ' "-IJuliet/src"' + ' "-IExternal/imgui"' .ProjectDefPath = '$_WORKING_DIR_$/$ProjectName$/$ProjectName$.def' // Library //-------------------------------------------------------------------------- ForEach( .BuildConfig in .BuildConfigs ) { Using( .BuildConfig ) .OutputBase + '\$Platform$-$BuildConfigName$' // Unity //-------------------------------------------------------------------------- Unity( '$ProjectName$-Unity-$Platform$-$BuildConfigName$' ) { .UnityInputPath = '$ProjectPath$/src/' .UnityOutputPath = '$OutputBase$/$ProjectPath$/' .UnityOutputPattern = '$ProjectName$_Unity*.cpp' .UnityMaxFiles = 5 } // 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$/' } #if __WINDOWS__ .ManifestFile = '$OutputBase$/$ProjectPath$/$ProjectName$$ExeExtension$.manifest.tmp' #endif // Executable //-------------------------------------------------------------------------- Executable( '$ProjectName$-Exe-$Platform$-$BuildConfigName$' ) { .Libraries = { 'Romeo-Lib-$Platform$-$BuildConfigName$', 'Juliet-Lib-$Platform$-$BuildConfigName$' } If ( .BuildConfigName != 'Release' ) { ^Libraries + { 'ImGui-Lib-$Platform$-$BuildConfigName$' } } .LinkerOutput = '$BinPath$/$Platform$-$BuildConfigName$/$ProjectName$$ExeExtension$' #if __WINDOWS__ .LinkerOptions + .CommonWinLibs .LinkerOptions + ' winhttp.lib' // Chose appropriate CRT .CRTLibs = .CRTLibs_Dynamic If ( .BuildConfigName == 'Debug' ) { ^CRTLibs = .CRTLibs_DynamicDebug } .LinkerOptions + .CRTLibs // Romeo uses WINDOWS subsystem so it has no console window by default .SubSystem = ' /SUBSYSTEM:WINDOWS' // Even in debug we might want WINDOWS to keep it background, but console helps for printf If ( .BuildConfigName == 'Debug' ) { ^SubSystem = ' /SUBSYSTEM:CONSOLE' // We use console in debug } .LinkerOptions + .SubSystem // Manifest .LinkerAssemblyResources = .ManifestFile .LinkerOptions + ' /MANIFEST:EMBED' #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$-$Config$' ] ^ProjectConfigsRomeo + .ProjectConfig #endif } VCXProject( '$ProjectName$' ) { .ProjectOutput = '$ProjectPath$/$ProjectName$.vcxproj' .ProjectBasePath = '$ProjectPath$/' .ProjectInputPaths = .ProjectBasePath .ProjectConfigs = .ProjectConfigsRomeo } VSSolution( 'Romeo-Solution' ) { .SolutionOutput = 'Romeo.sln' .SolutionProjects = { 'Romeo', 'Juliet', 'ImGui' } .SolutionConfigs = .ProjectConfigsRomeo .SolutionBuildProject = 'Romeo' } Alias( 'gen-romeo' ) { .Targets = 'Romeo-Solution' } }