[CMake] CMake + Native Builds, Relationship

William A. Hoffman billlist at nycap.rr.com
Sun May 28 11:24:54 EDT 2006


At 10:32 AM 5/28/2006, Steve Johns wrote:
>In another thread, Brandon wrote:
>
>>CMake is a build system generator; that means the drill is always going to be CMake + some other build system.  It's never going to be CMake by itself.
>
>This statement seems to sum up the strength and purpose of CMake.  This strikes me a a big-picture point that I never want to lose sight of.
>
>As a newbie to CMake, and considering the above, one thing I'd like to get clearer on is the nature of the ongoing interaction between CMake itself and the native build system files it generates.
>
>What I mean is, you don't just run CMake, get a native build system, and then proceed on in the native environment as if CMake no longer existed. Instead, the existence of CMake is somehow embedded in the native build systems that are created, and CMake itself gets re-invoked at various points in the future by those native builds as you go about extending and maintaining your project.  In fact, your own workflow is required to change somewhat as a result of the presence of CMake, yes?
>
>I'd appreciate any commentary, or pointers to commentary, on the ongoing relationship between CMake and the native build systems it generates.
>
>In my own terminology, working with CMake adds a meta-level to the model of a build process, and it is the nature of that meta-level that I'd like to get a better conceptual grasp on.  I don't know if that's a good or a poor way to put it, but I imagine that someone can grok my intent and offer a few pearls of insight.

Depending on the native build system CMake can do different things.

1. CMake always puts a hook in, so that if a cmake input file changes, cmake
will automatically run on the project.  (a user changes a CMakeLists.txt file,
cmake will rerun)

2. For native builds that do not provide dependency checking, cmake computes
source level depends.

3. In builds where cmake does the depends, cmake makes a run to make sure all
the files that are depended on exist, if not, it will force the depend step to re-run.

I think that is about it from high level.

-Bill



More information about the CMake mailing list