From d85a020971c1f88c17cf5ccb53ebd31060c8a296 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 28 Mar 2021 23:25:52 +0200 Subject: [PATCH] Fix picking game binaries target when EditorTarget is not SetupTargetEnvironment #398 --- Source/Editor/Scripting/ScriptsBuilder.cpp | 34 ++++++++++++------- .../Tools/Flax.Build/Build/ProjectTarget.cs | 2 +- Source/Tools/Flax.Build/ProjectInfo.cs | 2 ++ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Source/Editor/Scripting/ScriptsBuilder.cpp b/Source/Editor/Scripting/ScriptsBuilder.cpp index 1c489b2a9..00a93b66c 100644 --- a/Source/Editor/Scripting/ScriptsBuilder.cpp +++ b/Source/Editor/Scripting/ScriptsBuilder.cpp @@ -341,7 +341,21 @@ void ScriptsBuilder::GetBinariesConfiguration(const Char*& target, const Char*& target = platform = architecture = configuration = nullptr; return; } - target = Editor::Project->EditorTarget.GetText(); + + // Pick game target + if (Editor::Project->EditorTarget.HasChars()) + { + target = Editor::Project->EditorTarget.Get(); + } + else if (Editor::Project->GameTarget.HasChars()) + { + target = Editor::Project->GameTarget.Get(); + } + else + { + target = TEXT(""); + LOG(Error, "Missing editor/game targets in project. Please specify EditorTarget and GameTarget properties in .flaxproj file."); + } #if PLATFORM_WINDOWS platform = TEXT("Windows"); @@ -551,19 +565,13 @@ bool ScriptsBuilderService::Init() } // Verify project - if (project->EditorTarget.IsEmpty() || project->GameTarget.IsEmpty()) + if (project->EditorTarget.IsEmpty()) { - const String& name = project->Name; - String codeName; - for (int32 i = 0; i < name.Length(); i++) - { - Char c = name[i]; - if (StringUtils::IsAlnum(c) && c != ' ' && c != '.') - codeName += c; - } - project->GameTarget = codeName + TEXT("Target"); - project->EditorTarget = codeName + TEXT("EditorTarget"); - LOG(Warning, "Missing EditorTarget property in opened project, using deducted target name {0}", Editor::Project->EditorTarget); + LOG(Warning, "Missing {0} property in opened project", TEXT("EditorTarget")); + } + if (project->GameTarget.IsEmpty()) + { + LOG(Warning, "Missing {0} property in opened project", TEXT("GameTarget")); } // Remove any remaining files from previous Editor run hot-reloads diff --git a/Source/Tools/Flax.Build/Build/ProjectTarget.cs b/Source/Tools/Flax.Build/Build/ProjectTarget.cs index 19d23690f..790452b34 100644 --- a/Source/Tools/Flax.Build/Build/ProjectTarget.cs +++ b/Source/Tools/Flax.Build/Build/ProjectTarget.cs @@ -45,7 +45,7 @@ namespace Flax.Build throw new Exception($"Invalid or missing editor target {project.EditorTarget} specified in project {project.Name} (referenced by project {Project.Name})."); return result; } - if (!IsEditor && !string.IsNullOrEmpty(project.GameTarget)) + if (!string.IsNullOrEmpty(project.GameTarget)) { var result = projectTargets.FirstOrDefault(x => x.Name == project.GameTarget); if (result == null) diff --git a/Source/Tools/Flax.Build/ProjectInfo.cs b/Source/Tools/Flax.Build/ProjectInfo.cs index 5f144b2fd..c47c87331 100644 --- a/Source/Tools/Flax.Build/ProjectInfo.cs +++ b/Source/Tools/Flax.Build/ProjectInfo.cs @@ -119,6 +119,8 @@ namespace Flax.Build private bool IsTargetCSharpOnly(string name) { + if (string.IsNullOrWhiteSpace(name)) + return true; var rules = Builder.GenerateRulesAssembly(); var target = rules.GetTarget(name); return target == null || target.Modules.TrueForAll(x => !rules.GetModule(x).BuildNativeCode);