mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 04:59:20 +02:00
lazbuild: create project unit directory, target directory and application bundle
git-svn-id: trunk@27872 -
This commit is contained in:
parent
fa11cf2dab
commit
89a235667f
@ -32,7 +32,7 @@ uses
|
|||||||
// IDEIntf
|
// IDEIntf
|
||||||
MacroIntf, PackageIntf, IDEDialogs, ProjectIntf, IDEExternToolIntf,
|
MacroIntf, PackageIntf, IDEDialogs, ProjectIntf, IDEExternToolIntf,
|
||||||
// IDE
|
// IDE
|
||||||
IDEProcs, InitialSetupDlgs, OutputFilter, CompilerOptions,
|
IDEProcs, InitialSetupDlgs, OutputFilter, CompilerOptions, ApplicationBundle,
|
||||||
TransferMacros, EnvironmentOpts, IDETranslations, LazarusIDEStrConsts,
|
TransferMacros, EnvironmentOpts, IDETranslations, LazarusIDEStrConsts,
|
||||||
MiscOptions, Project, LazConf, PackageDefs, PackageLinks, PackageSystem,
|
MiscOptions, Project, LazConf, PackageDefs, PackageLinks, PackageSystem,
|
||||||
BuildLazDialog, BuildManager, BaseBuildManager;
|
BuildLazDialog, BuildManager, BaseBuildManager;
|
||||||
@ -595,6 +595,9 @@ var
|
|||||||
CompilerParams: String;
|
CompilerParams: String;
|
||||||
ToolBefore: TProjectCompilationToolOptions;
|
ToolBefore: TProjectCompilationToolOptions;
|
||||||
ToolAfter: TProjectCompilationToolOptions;
|
ToolAfter: TProjectCompilationToolOptions;
|
||||||
|
UnitOutputDirectory: String;
|
||||||
|
TargetExeName: String;
|
||||||
|
TargetExeDir: String;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
CloseProject(Project1);
|
CloseProject(Project1);
|
||||||
@ -636,13 +639,35 @@ begin
|
|||||||
WorkingDir:=Project1.ProjectDirectory;
|
WorkingDir:=Project1.ProjectDirectory;
|
||||||
SrcFilename:=CreateRelativePath(Project1.MainUnitInfo.Filename,WorkingDir);
|
SrcFilename:=CreateRelativePath(Project1.MainUnitInfo.Filename,WorkingDir);
|
||||||
|
|
||||||
|
// create unit output directory
|
||||||
|
UnitOutputDirectory:=Project1.CompilerOptions.GetUnitOutPath(false);
|
||||||
|
if not ForceDirectoriesUTF8(UnitOutputDirectory) then
|
||||||
|
Error(ErrorBuildFailed,'Unable to create project unit output directory '+UnitOutputDirectory);
|
||||||
|
|
||||||
|
// create target output directory
|
||||||
|
TargetExeName := Project1.CompilerOptions.CreateTargetFilename(Project1.MainFilename);
|
||||||
|
TargetExeDir := ExtractFilePath(TargetExeName);
|
||||||
|
if not ForceDirectoriesUTF8(TargetExeDir) then
|
||||||
|
Error(ErrorBuildFailed,'Unable to create project target directory '+TargetExeDir);
|
||||||
|
|
||||||
// update all lrs files
|
// update all lrs files
|
||||||
MainBuildBoss.UpdateProjectAutomaticFiles('');
|
MainBuildBoss.UpdateProjectAutomaticFiles('');
|
||||||
|
|
||||||
|
// create application bundle
|
||||||
|
if Project1.UseAppBundle and (Project1.MainUnitID>=0)
|
||||||
|
and (MainBuildBoss.GetLCLWidgetType(true)=LCLPlatformDirNames[lpCarbon])
|
||||||
|
then begin
|
||||||
|
if not (CreateApplicationBundle(TargetExeName, Project1.Title) in [mrOk,mrIgnore]) then
|
||||||
|
Error(ErrorBuildFailed,'Unable to create application bundle for '+TargetExeName);
|
||||||
|
if not (CreateAppBundleSymbolicLink(TargetExeName) in [mrOk,mrIgnore]) then
|
||||||
|
Error(ErrorBuildFailed,'Unable to create application bundle symbolic link for '+TargetExeName);
|
||||||
|
end;
|
||||||
|
|
||||||
// regenerate resources
|
// regenerate resources
|
||||||
if not Project1.Resources.Regenerate(SrcFileName, False, True, '') then
|
if not Project1.Resources.Regenerate(SrcFileName, False, True, '') then
|
||||||
DebugLn('TMainIDE.DoSaveProject Project1.Resources.Regenerate failed');
|
DebugLn('TMainIDE.DoSaveProject Project1.Resources.Regenerate failed');
|
||||||
|
|
||||||
|
// get compiler parameters
|
||||||
if CompilerOverride <> '' then
|
if CompilerOverride <> '' then
|
||||||
CompilerFilename := CompilerOverride
|
CompilerFilename := CompilerOverride
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user