[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