>>> On 30-11-2010 at 18:48, in message
<[email protected]>, Tyler
Roscoe <[email protected]> wrote: 
> On Thu, Nov 25, 2010 at 02:01:31PM +0100, Marcel Loose wrote:
>> >>> On 24-11-2010 at 17:45, in message
>> <[email protected]>, Tyler
>> Roscoe <[email protected]> wrote: 
>> > On Wed, Nov 24, 2010 at 12:11:56PM +0100, Micha Renner wrote:
>> >> 
>> >> >   SET(CMAKE_INSTALL_PREFIX "/foo/bar" CACHE PATH "Foo install
>> prefix")
>> >> > 
>> >> > So, without the test to
>> CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT,
>> >> > and without the FORCE option.
>> >>
>> >> No, as I mentioned, there was an article of one the
>> CMake-maintainers
>> >> who recommended this.
>> > 
>> > Micha is correct. CMAKE_INSTALL_PREFIX is set before your
>> CMakeLists.txt
>> > is processed, so the above will never do anything.
>> > 
>> > tyler
>> 
>> Well, I tested this before I posted my reply. It does work the way
I
>> describe it. Try it yourself.
> 
> It doesn't work for me:
> 
> [tyle...@tpb006:~/cmake-test-install-prefix]$ cmake --version
> cmake version 2.8.3
> 
> [tyle...@tpb006:~/cmake-test-install-prefix]$ cat CMakeLists.txt
> cmake_minimum_required(VERSION 2.8)
> project(p)
> 
> set (CMAKE_INSTALL_PREFIX "foo" CACHE PATH "docstring")
> message ("CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
> 
> [tyle...@tpb006:~/cmake-test-install-prefix]$ mkdir b && cd b &&
cmake ..
> -- The C compiler identification is GNU
> -- The CXX compiler identification is GNU
> -- Check for working C compiler: /usr/bin/gcc
> -- Check for working C compiler: /usr/bin/gcc -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working CXX compiler: /usr/bin/c++
> -- Check for working CXX compiler: /usr/bin/c++ -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> CMAKE_INSTALL_PREFIX = /usr/local
> -- Configuring done
> -- Generating done
> -- Build files have been written to:
/tpb006/tylermr/cmake-test-install-prefix/b

Hi Tyler,

I now see why it works for me and not for you. Maybe I didn't write it
clearly, but I do SET(CMAKE_INSTALL_PREFIX ...) *before* the call to
PROJECT(). You are right that it doesn't work when you do it after the
PROJECT() call. Unfortunately, the solution with the IF-test doesn't
work when you use it before the PROJECT() call, for obvious reasons I
would say.

So, there are two solutions that work, but you have to choose carefully
among them.

1) Use this snippet *before* PROJECT(xxx):
  SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment>)

2) Use this snippet *after* PROJECT(xxx):
  IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment> FORCE)
  ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

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

Reply via email to