On the other hand, with Visual Studio, it's all a big hairy mess..... because the setting for "how many parallel projects to build simultaneously" is a single top level global setting. So when we spawn sub-VS instances in VS 2008, for example, each one uses "N" for its parallel setting.
In that case, I typically recommend setting that "N" to be half to a quarter of your processors available, assuming that there will be between 2 and 4 (on average) projects building simultaneously. On Thu, Oct 7, 2010 at 11:55 AM, David Cole <david.c...@kitware.com> wrote: > If you use "$(MAKE)" in a BUILD_COMMAND, then the literal "$(MAKE)" appears > in the generated makefiles. > > That tells the top level make to spawn sub-makes with the job controller > from the top level make. > > Then you do not need to specify any -j flags anywhere except at the top > level. > > And then, the top level job controller makes sure there are only N > concurrent things happening regardless of the level of sub-makes... > > Does that "make" sense? > > > :-) > David > > > On Thu, Oct 7, 2010 at 11:52 AM, kent williams > <nkwmailingli...@gmail.com>wrote: > >> 1. Is that $(MAKE) or is it ${MAKE} ? One thing missing from the >> CMake documentation -- unless I'm mistaken there's not much >> explanation of CMake syntax in the documentation. >> >> 2. I think it's probably not what one intends to have 'make -j4' (for >> example) used every time make is invoked. If you configure a program >> that includes several ExternalProjects, then it would spawn 4 >> concurrent builds of those ExternalProjects, and then each of those >> builds would spawn 4 make steps at once, for 16 concurrent processes. >> >> >> On Thu, Oct 7, 2010 at 10:36 AM, Bill Hoffman <bill.hoff...@kitware.com> >> wrote: >> > On 10/7/2010 11:25 AM, kent williams wrote: >> >> >> >> On Wed, Oct 6, 2010 at 5:01 PM, Clifford Yapp<cliffy...@gmail.com> >> wrote: >> >>> >> >>> I use $(MAKE) in my BUILD_COMMAND and that seems to do OK, although I >> >>> don't know if it works universally. >> >>> >> >> >> >> That's an environment variable, as near as I can tell and isn't >> >> mentioned in the current CMake documentation. So it's probably not the >> >> best thing to do. >> >> >> >> upon reflection, this would be a little safer: >> >> >> >> if("${CMAKE_GENERATOR}" STREQUAL "Unix Makefiles") >> >> set(BUILD_COMMAND_STRING "${CMAKE_MAKE_PROGRAM} -j4") >> >> else() >> >> set(BUILD_COMMAND_STRING "$(CMAKE_MAKE_PROGRAM)") >> >> endif() >> > >> > By using $(MAKE), the toplevel -j N option should be passed down. The >> 2.8.3 >> > RC that is out now has some fixes in this area. >> > >> > >> > -Bill >> _______________________________________________ >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://www.cmake.org/mailman/listinfo/cmake >> > >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake