I am trying to figure out how define my build environment.
- I have multiple reusable standalone modules that are developed on their own release schedules.
- I also have multiple customers that each have their own custom built application using different revisions of each reusable module.
- I am using g++/makefiles for my build system
I need to make it portable for Cygwin and Linux.
Assuming each module/customer is built with its own Makefile, How can I configure my makefiles to dynamically point to the correct version of dependency?
How could/should I setup my CM repo to allow the development teams for each project and module to work independently and not have to lots of manual configuration each time they create a new branch?
I am using the following directory structure, but it doesnt seem sufficient for my needs.
./fooLibrary
./include
./lib
./barLibrary
./include
./lib
./plugins
./pluginX
./include
./lib
./pluginY
./include
./lib
./pluginZ
./include
./lib
./projects
./customer1
./bin
./obj
./projects/customer2
./bin
./obj
./projects/unittests
./bin
./obj
I was toying with creating a versioned install directory for each module with their own include/lib directories, but that seems overkill, and I never really liked versioning products of builds. i.e.
./fooLibrary
./src
./1.0
./include
./lib
./1.1
./include
./lib
./1.2
./include
./lib
./1.2.1
./include
./lib
I'm just trying to keep it simple for the development team.
EDIT: Its important to note that I dont have anything working yet. I feel like I am trying to do something right, but I am thrashing while trying to get it right.