On Thu, May 30, 2013 at 08:27:28AM +0200, Michael Wild wrote:

> Also, very astonishing to me is the fact that after apparently finding
> file(GLOB) in the documentation, you clearly didn't read the whole
> paragraph. It's right there:
> 
> >> We do not recommend using  GLOB  to collect  a list of source files
> >> from your source tree.  If no CMakeLists.txt file changes when a
> >> source is added or removed then the generated build system cannot
> >> know when to ask CMake to regenerate.
> 
> As you are so fond of clear violations: You failed to RTFM...
> (http://en.wikipedia.org/wiki/Rtfm)

Have you ever assumed, when crossing a street you know very well, that
cars will only come from one side and neglected to look in the other
direction ?

I needed a function to glob, I read the signature and went on to use it.

I did notice that in the documentation later.

> Besides, you seem to be very sure that CMake is the *only* tool that
> prefers explicit source file listing. 

Nope.

> Have you ever used any of the popular IDE's? Visual Studio? Xcode?
> Eclipse? They all create explicit list of files in their projects.

An IDE is a different class of tool, that builds on top of tools such as
CMake. Apples and oranges.

> What are the (not so serious) pros and cons of GLOB, even if it worked
> the way you think it should?
> 
> Pro:
> * laziness

You say it, like it's a bad thing.

> Con:
> * laziness
> * extremely error prone:
>   - picks up scratch files
>   - works for you but breaks for others because you forgot to commit a
>     file
>   - breaks for you because the other dude forgot to commit his file
> * makes it unnecessarily difficult to exclude files from the build
>   - temporarily: for testing (you'd need to move the file away and then
>     remember to move it back; error prone again)
>   - permanently: dependent on the platform, configuration, enabled
>     capabilities etc. And using #ifdef's for this is bad because you
>     still invoke the compiler and waste time to just compile an "empty"
>     file.
> * when reading the build system code, you have to switch context in
>   order to determine the files included in the build.

We've been through all these points earlier in this thread.

> On the other hand, initially creating and then maintaining an explicit
> list of files is easy. Initially I usually create the list of files like
> this using vim:
> 
> :r !cd $(dirname %); ls **/*.{c,cpp}; ls **/*.{h,hpp}

It's not about the difficulty of creating a file list.

WK
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to