// ==============================================================================================

        public static void DoBuild(BuildConfig pBuildConfig, string strAbsolute_BuildOutputFolderPath, string strFileName, BuildTarget eBuildTarget)
        {
            Process_PreBuild(pBuildConfig, strAbsolute_BuildOutputFolderPath, strFileName, eBuildTarget, out var eBuildTargetGroup, out var strBuildPath);

            BuildPlayerOptions   sBuildPlayerOptions   = Generate_BuildPlayerOption(pBuildConfig, eBuildTarget, strBuildPath);
            PlayerSetting_Backup pEditorSetting_Backup = SettingToBuildConfig_EditorSetting(pBuildConfig, eBuildTargetGroup);

            Debug.LogFormat(const_strPrefix_ForDebugLog + " Before Build DefineSymbol TargetGroup : {0}\n" +
                            "Origin Symbol : {1}\n " +
                            "Config : {2} \n" +
                            "Current : {3} \n" +
                            "strBuildPath : {4}",
                            eBuildTargetGroup,
                            pEditorSetting_Backup.strDefineSymbol,
                            pBuildConfig.strDefineSymbol,
                            PlayerSettings.GetScriptingDefineSymbolsForGroup(eBuildTargetGroup),
                            strBuildPath);

            try
            {
                BuildReport pReport = BuildPipeline.BuildPlayer(sBuildPlayerOptions);
                PrintLog(strBuildPath, pReport, pReport.summary);
            }
            catch (Exception e)
            {
                Debug.Log(const_strPrefix_ForDebugLog + " Error - " + e);
            }

            pEditorSetting_Backup.Back_To_Origin();
            Process_PostBuild(pBuildConfig, eBuildTarget);

            Debug.LogFormat(const_strPrefix_ForDebugLog + " After Build DefineSymbol Current {0}", PlayerSettings.GetScriptingDefineSymbolsForGroup(eBuildTargetGroup));
        }
        public static void DoBuild(BuildConfig pBuildConfig, string strAbsolute_BuildOutputFolderPath,
                                   string strFileName, BuildTarget eBuildTarget)
        {
            g_pLastConfig = pBuildConfig;

            Process_PreBuild(pBuildConfig, strAbsolute_BuildOutputFolderPath, strFileName, eBuildTarget, out var eBuildTargetGroup, out var strBuildPath);

            BuildPlayerOptions   sBuildPlayerOptions   = Generate_BuildPlayerOption(pBuildConfig, eBuildTarget, strBuildPath);
            PlayerSetting_Backup pEditorSetting_Backup = SettingBuildConfig_To_EditorSetting(pBuildConfig, eBuildTargetGroup);

            Debug.LogFormat(const_strPrefix_ForDebugLog + " Before Build DefineSymbol TargetGroup : {0}\n" +
                            "Origin Symbol : {1}\n " +
                            "Config : {2} \n" +
                            "Current : {3} \n" +
                            "strBuildPath : {4}",
                            eBuildTargetGroup,
                            pEditorSetting_Backup.strDefineSymbol,
                            pBuildConfig.strDefineSymbol,
                            PlayerSettings.GetScriptingDefineSymbolsForGroup(eBuildTargetGroup),
                            strBuildPath);

            try
            {
                BuildReport pReport = BuildPipeline.BuildPlayer(sBuildPlayerOptions);
                PrintBuildResult(strBuildPath, pReport, pReport.summary);
            }
            catch (Exception e)
            {
                Debug.Log(const_strPrefix_ForDebugLog + " Error - " + e);
                throw;
            }

            pEditorSetting_Backup.Back_To_Origin();
            Process_PostBuild(eBuildTarget, strAbsolute_BuildOutputFolderPath);

            Debug.LogFormat(const_strPrefix_ForDebugLog + " After Build DefineSymbol Current {0}",
                            PlayerSettings.GetScriptingDefineSymbolsForGroup(eBuildTargetGroup));

            // 2018.4 에서 프로젝트 전체 리임포팅 하는 이슈 대응
            // https://issuetracker.unity3d.com/issues/osx-batchmode-build-hangs-at-refresh-detecting-if-any-assets-need-to-be-imported-or-removed
#if UNITY_EDITOR
            AssetDatabase.Refresh();
#endif
        }