Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I think no special solutions are required. In our project (several applications that share large areas of code) we use the following approach:</p> <ol> <li>Split source code to folders.</li> <li>Create packages for logical units of shared code. </li> <li>Support monolith (without using packages) and parted builds.</li> <li>Monolith builds are used for coding and debugging. Each application has its own Unit output directory, so all of them are built independently. </li> <li>Dependency restrictions are enforced by search paths of projects.</li> <li>Parted build are created automatically (we use CruiseControl server and MSBuild project). Automatic build clears all temporary folders before build, so there are no dependencies between consecutive builds.</li> </ol> <p>In our case, we could not control list of imported files. However, we could control a list of imported packages in parted builds. Smaller packages mean better granularity. If somebody is adding dependency to the unit, located in folder that is not available in search path, and package containing this unit is not in uses list, parted build is failed. So, explicit action (modifying MSBuild script that generates CFG files for parted build) is required to add dependency. </p> <p>P.S. We use packages not to control dependencies, but because of Windows non-NT versions problems running large applications. So, dependency control is a side effect. Parted builds are considered as "release", and monolith - as "debug" configuration. Monolith applications are used only for coding and debugging. Developers work with monolith applications, and introduce their own changes to project configurations like attaching VCL debug info, switching on and off range check errors, optimization etc. However, after commit to SVN, CC tries to make parted build. It ignores CFG files from repository and re-creates them using special task of MSBuild project. So we can be sure no problems with dependencies were introduced (and perform other checks as well).</p> <p>As far as we don't need monolith and parted builds simultaneously, we have only a single project per application. If you want to build both versions in MSBuild script, you could simply add one more target, re-create CFG one more time and specify one more Unit output directory. Naturally, if both versions are required for developers, it would be more convenient to have more projects.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload