[CMake] Two phase install?
Alan W. Irwin
irwin at beluga.phys.uvic.ca
Wed Mar 23 23:41:55 EDT 2016
On 2016-03-24 02:02-0000 Scott Aron Bloom wrote:
> Thanks I'm getting close now.
>
> However, for the two sub projects, there doesn’t seem to be a way to run the make stage with -j 6 or any make options.
>
> Am I missing something? I see how to set CMAKE_ARGS but no MAKE_ARGS
Hi Scott:
Some of my further comments are somewhat off your original topic since
I discuss parallel build issues for the case of larger numbers of
projects in the superproject, but I thought you might be interested in
that case even though you just have two projects in your superproject.
For the superproject (epa_build in my case) I configure the
EPA_PARALLEL_BUILD_COMMAND variable to create the build command that I
use for all individual projects. That can be anything accessible from the
command-line such as nmake in the Windows case and make in the Unix
case. So in your case, your overall superproject could specify
set(SUPERPROJECT_BUILD_COMMAND make -j4)
(say), and then each of your two projects could be configured via
ExternalProject_Add to use ${SUPERPROJECT_BUILD_COMMAND} as the build
command for each individual project. But getting back to the more
complex case, for Unix on Windows (e.g. Cygwin, MinGW-w64/MSYS2,
MinGW/MSYS) I find parallel build options are not reliable (presumably
because of make bugs in all those platforms) so to work around that
issue, epa_build deliberately drops any -j options that might be
specified in EPA_PARALLEL_BUILD_COMMAND for those platforms. But for
the Linux case (and I assume Mac OS X, also although I haven't tried
it yet), the -j option for make does work reliably so I allow that
option to be part of the EPA_PARALLEL_BUILD_COMMAND for that platform.
N.B. with 60 projects being built (each one using a parallel build on
Linux) with one overall make command, I am currently careful to build
each of those projects one at a time (i.e., avoid any parallel options
on the overall build or just use -j1) to avoid overwhelming my
computer with parallel builds. However, come to think of it I have
always used that combination of -j options (-j4 for individual project
builds and -j1 for overall build) out of inertia, and there are many
other ways that avoidance can be done (e.g., -j4 on the overall build
and -j1 on the individual builds) so long as the product of the two
integers specified by the -j options does not get too excessive. So I
may do some experimentation concerning the most efficient combination
of individual and overall -j options the next time I do an epa_build
on Linux.
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the CMake
mailing list