[CMake] ARGVn madness?!
Marcel Loose
loose at astron.nl
Fri Nov 13 06:33:11 EST 2009
Hi all,
I've been bitten by an IMHO weird behaviour with argument substitution.
When I call a macro from within a function, then unused ARGVn variables
(where n=1..9) retain the value that they got when entering the
function. Is this a bug?!
This example demonstrates what I mean:
$ cat ../CMakeLists.txt
project(Dummy)
cmake_minimum_required(VERSION 2.6)
function(my_function)
message(STATUS "my_function: ARGC=${ARGC}")
message(STATUS "my_function: ARGV=${ARGV}")
message(STATUS "my_function: ARGV0=${ARGV0}")
message(STATUS "my_function: ARGV1=${ARGV1}")
my_macro(mies)
endfunction(my_function)
macro(my_macro)
message(STATUS "my_macro: ARGC=${ARGC}")
message(STATUS "my_macro: ARGV=${ARGV}")
message(STATUS "my_macro: ARGV0=${ARGV0}")
message(STATUS "my_macro: ARGV1=${ARGV1}")
endmacro(my_macro)
my_function(aap noot)
my_macro(wim)
$ cmake ..
-- my_function: ARGC=2
-- my_function: ARGV=aap;noot
-- my_function: ARGV0=aap
-- my_function: ARGV1=noot
-- my_macro: ARGC=1
-- my_macro: ARGV=mies
-- my_macro: ARGV0=mies
-- my_macro: ARGV1=noot <---
-- my_macro: ARGC=1
-- my_macro: ARGV=wim
-- my_macro: ARGV0=wim
-- my_macro: ARGV1=
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/loose/cmake/build
I expected to find "ARGV1=" in the line marked with "<---", not
"ARGV1=noot".
Best regards,
Marcel Loose.
More information about the CMake
mailing list