[CMake] How would I use parallel make on ExternalProjects?

kent williams nkwmailinglists at gmail.com
Thu Oct 7 11:52:09 EDT 2010


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.hoffman at kitware.com> wrote:
> On 10/7/2010 11:25 AM, kent williams wrote:
>>
>> On Wed, Oct 6, 2010 at 5:01 PM, Clifford Yapp<cliffyapp at 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


More information about the CMake mailing list