Re: [CMake] Strange search order of CMakeCache.txt

2010-03-05 Thread Eric Noulard
2010/3/5 kent williams :
> I recently had to help out a CMake newbie, who had run CMake in the
> source directory.  Then he re-read the instructions on build setup for
> our programs, and did it the right way -- i.e. he configured a build
> directory for an out of source build.
>
> Problem is, if you run CMake and configure the source directory, CMake
> will assume you want an in-source build, even if you try and configure
> an out-of-source build directory. So you get this mystifying behavior.

[...]

I run into this many time with users which are not CMake aware,
thus I did file a bug report:
http://public.kitware.com/Bug/view.php?id=6672

Anyone wanting to try a patch for this...
-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
___
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://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Strange search order of CMakeCache.txt

2010-03-05 Thread kent williams
I recently had to help out a CMake newbie, who had run CMake in the
source directory.  Then he re-read the instructions on build setup for
our programs, and did it the right way -- i.e. he configured a build
directory for an out of source build.

Problem is, if you run CMake and configure the source directory, CMake
will assume you want an in-source build, even if you try and configure
an out-of-source build directory. So you get this mystifying behavior.

# sourcedir is 'test', in same directory as test-build

cd test   # source dir
cmake   # whoops, configured in the source directory!
cd ../test-build# come to senses, go to out-of-srouce build.
cmake ../test  # try configuring for out of source build
make # now you get a "Makefile not found" error!

In order to get rid of the problem you have to delete CMakeCache.txt
in the source directory -- at a minimum -- before you can configure
the out-of-source build.  I ended up going through the source code
trying to get rid of CMake droppings, which are numerous!
___
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://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Strange search order of CMakeCache.txt

2010-03-05 Thread Bill Hoffman

Marcel Loose wrote:


I would definitely like to get a warning when CMake finds a cache file
in what it thinks should be the source directory. It would have saved me
an hour of debugging. OTOH, now that I know of this "strange" behaviour,
I might be able to tackle these kinds of problems quicker.



It does say where the build files were written as the last message that 
is printed out



cmake ../src
...
-- Configuring done
-- Generating done
-- Build files have been written to: C:/hoffman/My Builds/src

If that is what they wanted (an in source build), CMake can not warn 
about it.



-Bill

___
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://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Strange search order of CMakeCache.txt

2010-03-05 Thread Marcel Loose
On Fri, 2010-03-05 at 14:27 +0100, Michael Wild wrote:
> On 5. Mar, 2010, at 14:19 , Marcel Loose wrote:
> 
> > Hi all,
> > 
> > I just spent an hour debugging a very strange phenomenon running
CMake
> > on Mac OS-X, which in the end turned out to be trivial, but
completely
> > unexpected for me.
> > 
> > The problem was caused by the fact that CMake had accidentally been
run
> > once from the source directory. When running CMake in an empty
binary
> > directory it seemed to somehow fail to set CMAKE_BINARY_DIR
correctly.
> > 
> > Cause of the problem turned out to be the order in which CMake
searches
> > for the CMakeCache.txt file: first in the directory containing the
> > CMakeLists.txt file (CMAKE_SOURCE_DIR), then in the (binary)
directory
> > that CMake is being run from (CMAKE_BINARY_DIR). 
> > 
> > Wouldn't it be more logical to start in the binary directory and
then
> > look in the source directory? Or, probably even better, completely
> > ignore the source directory when searching for the cache file.
> > 
> > Best regards,
> > Marcel Loose.
> 
> It is not very intuitive (but very useful) that CMake first assumes
the directory argument to be a binary tree, and only then looks for a
CMakeLists.txt. E.g.:
> 
> 
> mkdir -p path/to/build-tree
> cd path/to/build-tree
> cmake path/to/source-tree
> # now want to change some setting, don't have to remember/type
source-tree path
> ccmake .
> make
> 
> On the other hand, it can be quite confusing behavior if an
"accidental" CMakeCache.txt is present in the source tree... Perhaps
CMake should add a safety check and emit a warning if a cache exists in
the current working directory that references the same source tree as
the cache in the directory specified on the command line...
> 
> 
> Michael

Hi Michael,

I never knew you could use path/to/build-tree as argument to cmake, but
re-reading the docs reveals that feature.

I would definitely like to get a warning when CMake finds a cache file
in what it thinks should be the source directory. It would have saved me
an hour of debugging. OTOH, now that I know of this "strange" behaviour,
I might be able to tackle these kinds of problems quicker.

Best regards,
Marcel Loose.


___
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://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Strange search order of CMakeCache.txt

2010-03-05 Thread Michael Wild

On 5. Mar, 2010, at 14:19 , Marcel Loose wrote:

> Hi all,
> 
> I just spent an hour debugging a very strange phenomenon running CMake
> on Mac OS-X, which in the end turned out to be trivial, but completely
> unexpected for me.
> 
> The problem was caused by the fact that CMake had accidentally been run
> once from the source directory. When running CMake in an empty binary
> directory it seemed to somehow fail to set CMAKE_BINARY_DIR correctly.
> 
> Cause of the problem turned out to be the order in which CMake searches
> for the CMakeCache.txt file: first in the directory containing the
> CMakeLists.txt file (CMAKE_SOURCE_DIR), then in the (binary) directory
> that CMake is being run from (CMAKE_BINARY_DIR). 
> 
> Wouldn't it be more logical to start in the binary directory and then
> look in the source directory? Or, probably even better, completely
> ignore the source directory when searching for the cache file.
> 
> Best regards,
> Marcel Loose.

It is not very intuitive (but very useful) that CMake first assumes the 
directory argument to be a binary tree, and only then looks for a 
CMakeLists.txt. E.g.:


mkdir -p path/to/build-tree
cd path/to/build-tree
cmake path/to/source-tree
# now want to change some setting, don't have to remember/type source-tree path
ccmake .
make

On the other hand, it can be quite confusing behavior if an "accidental" 
CMakeCache.txt is present in the source tree... Perhaps CMake should add a 
safety check and emit a warning if a cache exists in the current working 
directory that references the same source tree as the cache in the directory 
specified on the command line...


Michael
___
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://www.cmake.org/mailman/listinfo/cmake