Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Get SCons to create a usable environment-setter-upper, probably a .bat file that can be run before invoking devenv. Partially done as of 3/13.  _setup.bat fixes up the PATH variable but doesn't yet handle other variables. As of 3/20 also defines INST_DIR. Still need to add definition for ROOTSYS, add to PYTHONPATH and (the tough one) deal with pfiles.
  2. Add custom tool for swig to project files as needed.
  3. Add custom tool for rootcint to project files as needed.
  4. Solutions files created by SCons need to a) include references to project files for all libraries used, not just the ones in the current package and b) keep track of dependencies among the projects so that build order is correct. When I use the Studio gui to say that one project is dependent upon another, the information goes in the solution file.  MRvcmt does it by parsing output from cmt show uses. It then recursively adds to the package solution references to all project files of libraries used by components of the package and adds all the dependencies as well. This is going to be difficult to do with SCons because
    • there is no ready-made analog for cmt show uses, though SCons must have the information internally.
    • even assuming msvs.py (which writes the project and solution files) has access to the dependency information, that might not be enough for it to be able to find project file paths for libraries in other packages.

Solution files - a plan
Anchor
solution_plan
solution_plan

The closest analog to cmt show uses in SCons is probably the LIBS contruction environment variable, used to construct the link command for a particular target. It has a list of all libraries (by name; does not include path information) needed in the link. In principal there could be a different LIBS variable for every target, but usually all or most applications in a single package will use the same construction environment (hence have the same value for LIBS). The LIBS variable for the primary shareable library is necessarily different since it doesn't include a reference to itself. LIBS includes references to external libraries as well as locally-built ones, so it will be necessary to discover which names refer to externals and exclude them from further processing.

...