On Wednesday 27 April 2011, Nicolas Desprès wrote:
> Hi,
>
> I'm experimenting with the variables available in script mode in the
> current master (a3a581f8cd):
>
> CMAKE_SCRIPT_MODE_FILE
> CMAKE_ARGC
> CMAKE_ARGVx
>
> Apparently they are not available in 2.8.4 yet.
>
> Using this test script:
>
> ##################
> message("Begin")
> message("CMAKE_SCRIPT_MODE_FILE=${CMAKE_SCRIPT_MODE_FILE}")
> message("CMAKE_ARGC=${CMAKE_ARGC}")
> foreach(i RANGE 0 ${CMAKE_ARGC})
>   message("CMAKE_ARGV${i}=${CMAKE_ARGV${i}}")
> endforeach(i)
> message("CMAKE_ARGV=${CMAKE_ARGV}")
> message("CMAKE_ARGN=${CMAKE_ARGN}")
> message("End")
> #################
>
> I have the following behavior:
>
> $ ~/build/cmake/git/_build/bin/cmake -P /tmp/test.cmake a1 a2
> Begin
> CMAKE_SCRIPT_MODE_FILE=/tmp/test.cmake
> CMAKE_ARGC=5
> CMAKE_ARGV0=/home/despre_n/build/cmake/git/_build/bin/cmake
> CMAKE_ARGV1=-P
> CMAKE_ARGV2=/tmp/test.cmake
> CMAKE_ARGV3=a1
> CMAKE_ARGV4=a2
> CMAKE_ARGV5=
> CMAKE_ARGV=
> CMAKE_ARGN=
> End
>
> I think the user does not care about having CMAKE_ARGV1=-P and
> CMAKE_ARGV2=/tmp/test.cmake
> I have attached a patch that do this behavior:
>
> $ ~/build/cmake/git/_build/bin/cmake -P /tmp/test.cmake a1 a2
> Begin
> CMAKE_SCRIPT_MODE_FILE=/tmp/test.cmake
> CMAKE_ARGC=2
> CMAKE_ARGV0=a1
> CMAKE_ARGV1=a2
> CMAKE_ARGV2=
> CMAKE_ARGV=
> CMAKE_ARGN=
> End

I'm not sure I like this special handling.
See this example:
$ /opt/cmake-HEAD/bin/cmake -DFOO=TRUE -P test.cmake abc 123
Begin
CMAKE_SCRIPT_MODE_FILE=/home/alex/src/tests/cmakeargs/test.cmake
CMAKE_ARGC=6
CMAKE_ARGV0=/opt/cmake-HEAD/bin/cmake
CMAKE_ARGV1=-DFOO=TRUE
CMAKE_ARGV2=-P
CMAKE_ARGV3=test.cmake
CMAKE_ARGV4=abc
CMAKE_ARGV5=123
CMAKE_ARGV6=
CMAKE_ARGV=
CMAKE_ARGN=
End


I think it's ok to just hand all the arguments to the cmake script, so it can 
look at everything and figure out what to do.

Alex
_______________________________________________
cmake-developers mailing list
[email protected]
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to