[sldev] [VWR] Switch to cmake?
Bill Hoffman
bill.hoffman at kitware.com
Fri Oct 19 09:56:14 PDT 2007
Dzonatas wrote:
> Bill Hoffman wrote:
>> Dzonatas wrote:
>>> Bill Hoffman wrote:
>>
>> OK, I am a bit lost here... I have not built SL at all. What do you
>> mean by Express? I am not sure what you mean by automake like
>> options either. CMake can generate nmake and gmake files on windows as
>> well as the IDE project files. I currently use gmake with the MS VS
>> 2005 compiler, and make -j2 for a dual core processor. Is that what
>> you are asking?
>
> Express is the free version of MSVS, but the IDE is limited. It gives
> full compiler ability from the command line, however.
>
> The dependencies can be a major pain in a large project if it is not
> automated in some way. I'm not positive if nmake/gmake can handle the
> complexity of them. I'm curious to know how CMake tracks changes and
> regenerates dependencies based on them.
>
OK, I thought that might be the Express you were talking about. CMake
supports Express, and the IDE. The nmake/gmake files created by CMake
can handle any level of complexity allowed in CMake. CMake does source
level dependency scanning, as well as target level stuff. So, yes,
CMake does track and regenerate dependency information as needed.
>>
>>> Does it also do staged builds? We compile all the external libraries,
>>> build the directory structures, and then compile all of SL itself,
>>> then create an installation package (InstallJammer).
>>
>> It could be made to do staged builds. The external libraries could be
>> made to be a separate project, and SL could be a project that uses
>> that project, much like my small VTK example. CMake supports creation
>> of installer stuff as well. We currently support NSIS installer,
>> Debian packages, RPMs, cygwin packages, zip files, tar.gz files, and
>> self extracting tar.gz files.
>>
>
> For example, if there is a small change made in the one of the external
> library sources, does CMake know how to regenerate only related
> dependencies throughout the entire build and all projects? It can be
> very costly to develop or improve the source (even external library
> source) if a small change makes the build do more than it should. It is
> a concern.
>
> Those with superfast compile farms probably don't see it as much of a
> concern because the compile farm has been the answer to solve it.
CMake should not build more than is needed. It does very accurate
dependency checking. For the IDE builds, the source level depend
information is left to the IDE. But, for the makefiles all of it is
under the control of CMake. So, in short, CMake does not build more
than it should.
-Bill
More information about the SLDev
mailing list