[CMake] CMake terminology

Ruslan Baratov ruslan_baratov at yahoo.com
Sat Jun 25 11:42:29 EDT 2016


On 25-Jun-16 10:44, Craig Scott wrote:
> One of the slight wrinkles here is that the distinction between 
> configure and generation times is now a little stronger due to 
> generator expressions. In order to really understand generator 
> expressions, you cannot really avoid getting your head around 
> configure and generate being distinct parts of the process. 
> Personally, I tend to gloss over the distinction when explaining 
> things so as not to distract the reader, but if I'm explaining 
> something to do with generator expressions, then the distinction has 
> to be made and I deliberately use the terms /configure/ and 
> /generation/ stages.
I'm not sure I understand the link between "generator expressions" and 
"confusing configure+generate stage". Do you mean "generator 
expressions" on "configure+generate stage" vs "build stage"?

>
> Also, as Ruslo points out, cmake can be used like a front end to the 
> build step proper (i.e. cmake --build ...). I still see this as the 
> /build/ though, not a cmake-specific step per se. If you treated that 
> as a cmake step, then one could argue the whole build is cmake because 
> cmake can be used to invoke the test and package targets too. I doubt 
> many people think this way, so personally I feel it is clearer to 
> refer to the /build/ stage as simply that without bringing cmake into 
> the terminology.
Okay, I agree. "cmake build step" sounds weird, it should be just "build 
step" which can be triggered by "cmake --build" command. Also to be 
pedantic: it's CTest for testing stage and CPack for packing stage, not 
CMake (or you mean CMake tools?).

>
> So in summary, here's the set of terminology I use (hopefully similar 
> to what others intuitively expect):
>
> Workflow stages in general:  cmake (or project setup) --> build --> 
> test --> package
>
> If talking about generator expressions:  configure --> generate --> 
> build --> test --> package
This one reminds me about ExternalProject_Add command. It has "Configure 
step" with "CONFIGURE_COMMAND". This is where "cmake -H. -B_builds" 
happens :)

So for now I see two choices:
* invent new name for configure+generate :) well, this seems like a huge 
overkill...
* use words "configure" and "generate" interchangeably for command line 
cmake, depending on context, e.g.:
  * "you can add `-D` on __configure step__ to modify cache..."
  * "you can add `-G Xcode` on __generate step__ to create Xcode project 
instead of Makefile..."

Ruslo

>
>
>
> On Sat, Jun 25, 2016 at 5:02 PM, Eric Noulard <eric.noulard at gmail.com 
> <mailto:eric.noulard at gmail.com>> wrote:
>
>     Hi there,
>
>     I'd like to give my opinion here.
>     I agree that the fact that the cmake ui (qt or curse) makes it
>     possible to separate configure from generate
>     is an implementation detail. In fact one could perfectly decide
>     that the "configure" step should "generate "
>     each time it is run. Making it two-step save some time for big
>     project but I have already seen people forgetting
>     to generate and asking themselves why they didn't get any makefiles...
>
>     Nevertheless from a user point of view explaining that there are
>     different "time" because CMake is a buid system **generator** and
>     not a build tool seems very important to me.
>
>     Some action may be run during CMake time some may be done during
>     Build time.
>     For me CMake run is configure+generate.
>
>     I did gave a tutorial which is now a bit outdated where I tried to
>     picture this.
>     See attached file or:
>     https://github.com/TheErk/CMake-tutorial
>
>     my 2 cents.
>
>     2016-06-25 2:33 GMT+02:00 Ruslan Baratov via CMake
>     <cmake at cmake.org <mailto:cmake at cmake.org>>:
>
>         There is cmake **build** step: cmake --build _builds
>
>         So in GUI it's:
>          * cmake configure
>          * cmake generate
>          * IDE build (which you can do with cmake --build so it can be
>         called "cmake build" step)
>
>         in cmd:
>          * cmake configure+generate
>          * cmake build
>
>         Also I can call it "cmake step" in docs about some C++
>         project, but if the docs about cmake itself I think this term
>         is too wide
>
>
>         On 25-Jun-16 02:13, Craig Scott wrote:
>>         In documentation, blog articles, etc. I just call it the
>>         "cmake" step (or sometimes the "project setup" step if
>>         talking in a more project-wide sense). For many users, the
>>         separate configure and generate steps are somewhat of an
>>         implementation detail, so it makes more sense to give it a
>>         single term. I'm not aware of any generally accepted term,
>>         but the ones I use seem to be fairly easy to understand,
>>         especially for those new to CMake. YMMV.
>>
>>         On Saturday, 25 June 2016, Ruslan Baratov via CMake
>>         <cmake at cmake.org <mailto:cmake at cmake.org>> wrote:
>>
>>             On 24-Jun-16 23:49, Robert Maynard wrote:
>>
>>                 Please run the configure and generate steps by
>>
>>             It's too long :)
>>
>>             Also it doesn't express the fact that it's a single
>>             action, consider:
>>               "To add variables on configure and generate steps use '-D'"
>>               "Before running configure and generate steps note that
>>             old variables from cache can be used"
>>               etc.
>>
>>
>>
>>                 On Fri, Jun 24, 2016 at 4:40 PM, Ruslan Baratov
>>                 <ruslan_baratov at yahoo.com> wrote:
>>
>>                     On 24-Jun-16 23:25, Robert Maynard wrote:
>>
>>                         cmake from the command line is still running
>>                         the two stages, it just
>>                         doesn't allow for feedback/input from the
>>                         user between the two stages.
>>
>>                     Yes, I understand that. Question is about the
>>                     name of the step. I.e. when I
>>                     do write manual what should I choose
>>                        Please run configure step by: cmake -H. -B_builds
>>                     or
>>                        Please run generate step by: cmake -H. -B_builds
>>                     ?
>>
>>                     May be both versions are correct? Or both incorrect?
>>
>>                     Ruslo
>>
>>
>>                         On Fri, Jun 24, 2016 at 4:06 PM, Ruslan
>>                         Baratov via CMake
>>                         <cmake at cmake.org> wrote:
>>
>>                             Hi,
>>
>>                             I have a question about CMake
>>                             terminology. When we are using CMake GUI
>>                             there
>>                             are two buttons "Configure" and
>>                             "Generate", hence we have two stages:
>>
>>                             1. Configure step, when we do configuring
>>                             project, effectively creating
>>                             file
>>                             with cache variables (which we can
>>                             modify) without really generating
>>                             native
>>                             tools files like Makefile/*.sln/etc.
>>
>>                             2. Generate step, when we do generating
>>                             project using file with cache
>>                             variables, i.e. create those
>>                             Makefile/*.sln/etc.
>>
>>                             The question is about command line
>>                             version of CMake. Since we do creating
>>                             file with cache and generate native tools
>>                             files in one step what is the
>>                             right term? Is it a configure step
>>                             because we read user's '-D' and create
>>                             cache file?  Is it a generate step
>>                             because native tools files generated
>>                             at
>>                             the end? May be there is a third name to
>>                             describe the fact that it's
>>                             configure+generate step?
>>
>>                             Thanks, Ruslo
>>                             --
>>
>>                             Powered by www.kitware.com
>>                             <http://www.kitware.com>
>>
>>                             Please keep messages on-topic and check
>>                             the CMake FAQ at:
>>                             http://www.cmake.org/Wiki/CMake_FAQ
>>
>>                             Kitware offers various services to
>>                             support the CMake community. For more
>>                             information on each offering, please visit:
>>
>>                             CMake Support:
>>                             http://cmake.org/cmake/help/support.html
>>                             CMake Consulting:
>>                             http://cmake.org/cmake/help/consulting.html
>>                             CMake Training Courses:
>>                             http://cmake.org/cmake/help/training.html
>>
>>                             Visit other Kitware open-source projects at
>>                             http://www.kitware.com/opensource/opensource.html
>>
>>                             Follow this link to subscribe/unsubscribe:
>>                             http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>>
>>
>>             -- 
>>
>>             Powered by www.kitware.com <http://www.kitware.com>
>>
>>             Please keep messages on-topic and check the CMake FAQ at:
>>             http://www.cmake.org/Wiki/CMake_FAQ
>>
>>             Kitware offers various services to support the CMake
>>             community. For more information on each offering, please
>>             visit:
>>
>>             CMake Support: http://cmake.org/cmake/help/support.html
>>             CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>             CMake Training Courses:
>>             http://cmake.org/cmake/help/training.html
>>
>>             Visit other Kitware open-source projects at
>>             http://www.kitware.com/opensource/opensource.html
>>
>>             Follow this link to subscribe/unsubscribe:
>>             http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>>
>>         -- 
>>         Craig Scott
>>         Melbourne, Australia
>>         http://crascit.com
>>
>
>
>         --
>
>         Powered by www.kitware.com <http://www.kitware.com>
>
>         Please keep messages on-topic and check the CMake FAQ at:
>         http://www.cmake.org/Wiki/CMake_FAQ
>
>         Kitware offers various services to support the CMake
>         community. For more information on each offering, please visit:
>
>         CMake Support: http://cmake.org/cmake/help/support.html
>         CMake Consulting: http://cmake.org/cmake/help/consulting.html
>         CMake Training Courses: http://cmake.org/cmake/help/training.html
>
>         Visit other Kitware open-source projects at
>         http://www.kitware.com/opensource/opensource.html
>
>         Follow this link to subscribe/unsubscribe:
>         http://public.kitware.com/mailman/listinfo/cmake
>
>
>
>
>     -- 
>     Eric
>
>
>
>
> -- 
> Craig Scott
> Melbourne, Australia
> http://crascit.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160625/d22f243a/attachment-0001.html>


More information about the CMake mailing list