' in der Projektdatei die entsprechende Default-Config aktivieren (Release, Debug oder DebugOhneEurekalog)
function UpdateDefaultConfigInProjectFile(Action)
File = ExpandVarQuiet(Action.BuildFile)
Config = FBVariables.MAKE_CONFIG
set
XML = CreateObject("Microsoft.XMLDOM")
XML.preserveWhiteSpace = True
XML.async = False
if not
XML.load(File) then call Err.Raise(1, "FinalBuilder", File + " not loaded : " + CStr(
XML.parseError.errorCode) + " " + CStr(
XML.parseError.reason))
set Node =
XML.selectSingleNode("//ItemGroup/BuildConfiguration[@Include='" + Config + "']")
if Node is Nothing then
Action.Echo "does NOT found Config '" + Config + "' in " + File
else
Action.Echo "found Config '" + Config + "' in " + File
set Node =
XML.selectSingleNode("//PropertyGroup/Config")
if Node.text <> Config then
Node.text = Config
XML.preserveWhiteSpace = True ' sonst wird aus 4-Leerzeichen ein Tab, bei der Einrückung
'if
XML.save(File) <> 0 then call Err.Raise(1, "FinalBuilder", "write error")
Text =
XML.xml
' aus nachfolgenden <PostBuildEvent>"$(root)\... wurde <PostBuildEvent>"$(root)\...
' im ersten <PostBuildEvent><![CDATA["$(root)\... ist und bleibt alles OK
' es funktioniert zwar dennoch, aber im GIT-Diff/Commit wäre es blöde
Line = "<PostBuildEvent>"$(root)\Build\dproj__compile_postbuild.cmd" "$(Config)" "$(Platform)" "$(OutputExt)" "$(InputDir)$(InputName)" "$(OutputDir)$(OutputName)""
Text = Replace(Text, Replace(Line, """, """"), Line)
Line = "<Debugger_Launcher>/usr/bin/xterm -e "%debuggee%"</Debugger_Launcher>"
Text = Replace(Text, Replace(Line, """, """"), Line)
' innerhalb der Nicht-CDATA-PostBuildEvent wird vom Delphi nur CR gespeichert (nicht LF), aber überall sonst als CRLF
Text = Replace(Text, vbCrLf + "</PostBuildEvent>", vbCr + "</PostBuildEvent>")
' Außerdem speichert Delphi inkl. UTF-8 BOM, aber
XML.save tut das nicht
set fh = CreateObject("ADODB.Stream")
fh.Charset = "UTF-8"
fh.Open
fh.WriteText Text
fh.SaveToFile File, 2 ' 2=adSaveCreateOverWrite
fh.Close
end if
end if
end function