I've been developing in Delphi for the past 10+ years (from Delphi 1). Every version brings some new features - new controls, new build options, new IDE features.
One question I always ask myself when starting a new Delphi program - a project with two or more applications - is how to best layout all the Delphi files one project is made of? Source code files (PAS) and DFM files (Delphi forms) should go into a source control system. Executable (EXE) should be placed into a separate folder. Third party tools (units) should have their own folders. If I have BPLs or DLLs they also should have their own folder. Resources should be also separated.
Delphi Project Structure Folder Organisation - Best Practice?Since with Delphi you can have more than one project in a project group - and each project can have its own set of options where to store various project related files and since I am using source control - here's what my current best practice in Delphi project layout is:
Project Group Folder -Common //code used by all project in the group --DCU -----Debug -----Release --Source* -----Database -----GUI -----Other -Project 1 Folder ---Bin -----Debug -----Release ---DCU -----Debug -----Release ---Documentation* ---Help* ---GFX* ---Source* -----Database -----GUI -----Other ---Resources* -Project2 Folder ---Bin -----Debug -----Release ---DCU -----Debug -----Release ---Documentation* ---Help* ---GFX* ---Source* -----Database -----GUI -----Other ---Resources* -Setup* --Output
The above layout is an example layout for Delphi project groups. Also note that you might not need all the folders here (for example "\Source\Database" for database related source files; or "Resources" for any resources that get compiled into the final executable) - or that you might want to add more folders :)
Folders that are marked with a star (*) should be stored in a source control system.
With the above structure you can easily decide what files (folders) should go into a source control system - by their extension.
Some more complex projects might need more complex directory layout - but the one above has proven the best for my Delphi work.
Delphi Project OptionsThe "Project Options" dialog box (CTRL+SHIFT+F11) lets you set your directory and conditional defines paths for every Delphi project in a project group.
- Build Configuration - displays the current named build configuration. There are two default build configurations: Debug and Release.
- Output directory - specifies where the compiler should put the executable file.
- Unit output directory - specifies a directory to contain the .dcu (Win32) or .dcuil (.NET) files.