Re: [CMake] How to write a correct wrapper of MESSAGE()?

2014-03-05 Thread Clark Wang
On Mon, Oct 21, 2013 at 6:06 PM, Johannes Zarl johannes.z...@jku.at wrote:

 On Thursday, 17. October 2013, 07:12:51, Clark WANG wrote:
  When I'm using CMake more and more I find it's not a real serious
  language. It's so tricky.

 I can see why you are frustrated. I don't think it's all bad though.
 Hopefully
 CMake3 will be used for some language cleanups at the expense of breaking
 some
 backwards-compatibility...


The 3.0 (now rc1) release
noteshttp://www.cmake.org/cmake/help/v3.0/release/3.0.0.htmldid not
mention about these kinds of things. :(


   Johannes
 --

 Powered by www.kitware.com

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

 Kitware offers various services to support the CMake community. For more
 information on each offering, please visit:

 CMake Support: http://cmake.org/cmake/help/support.html
 CMake Consulting: http://cmake.org/cmake/help/consulting.html
 CMake Training Courses: http://cmake.org/cmake/help/training.html

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

 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake

-- 

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-21 Thread Johannes Zarl
On Thursday, 17. October 2013, 07:12:51, Clark WANG wrote:
 When I'm using CMake more and more I find it's not a real serious
 language. It's so tricky.

I can see why you are frustrated. I don't think it's all bad though. Hopefully 
CMake3 will be used for some language cleanups at the expense of breaking some 
backwards-compatibility...

  Johannes
--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-16 Thread Clark WANG
On Tue, Oct 15, 2013 at 8:12 PM, Johannes Zarl johannes.z...@jku.at wrote:

 On Monday, 14. October 2013, 19:07:06, Matthew Woehlke wrote:
   The IN LISTS signature of foreach seems to do additional list
   splitting, leading to (foo;bar baz) appearing as 3 elements.
   Accessing the ARGV array by the positional indices (e.g. ${ARGV0})
   prevents the splitting.
 
  Really? That... is surprising. I thought the whole point of 'IN LISTS'
  was to take a variable that already contains a list and NOT do
  additional splitting (the way 'foreach(NAME ${LIST})' would)...

 While the behaviour here is hardly what one would expect, the list is not
 really split.

 What happens, is the following:
  1) Function info gets two parameters: foo;bar and baz
  2) The ARGV list is created by adding the parameters to the list:
 set(ARGV)
 list(ADD ARGV foo;bar) # here the foo;bar list is flattened
 list(ADD ARGV baz)
  Since a list cannot contain another list, we get a flattened
 representation
  of  the arguments: ARGV == foo;bar;baz
  3) foreach(name IN LISTS ARGV) only gets to see the flattened
 representation
  contained in ARGV.


When I'm using CMake more and more I find it's not a real serious
language. It's so tricky.


   Johannes
 --

 Powered by www.kitware.com

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

 Kitware offers various services to support the CMake community. For more
 information on each offering, please visit:

 CMake Support: http://cmake.org/cmake/help/support.html
 CMake Consulting: http://cmake.org/cmake/help/consulting.html
 CMake Training Courses: http://cmake.org/cmake/help/training.html

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

 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-15 Thread Johannes Zarl
On Monday, 14. October 2013, 19:07:06, Matthew Woehlke wrote:
  The IN LISTS signature of foreach seems to do additional list
  splitting, leading to (foo;bar baz) appearing as 3 elements.
  Accessing the ARGV array by the positional indices (e.g. ${ARGV0})
  prevents the splitting.
 
 Really? That... is surprising. I thought the whole point of 'IN LISTS'
 was to take a variable that already contains a list and NOT do
 additional splitting (the way 'foreach(NAME ${LIST})' would)...

While the behaviour here is hardly what one would expect, the list is not 
really split.

What happens, is the following:
 1) Function info gets two parameters: foo;bar and baz
 2) The ARGV list is created by adding the parameters to the list:
set(ARGV)
list(ADD ARGV foo;bar) # here the foo;bar list is flattened
list(ADD ARGV baz)
 Since a list cannot contain another list, we get a flattened representation
 of  the arguments: ARGV == foo;bar;baz
 3) foreach(name IN LISTS ARGV) only gets to see the flattened representation
 contained in ARGV.

  Johannes
--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-14 Thread Matthew Woehlke

On 2013-10-09 07:44, Johannes Zarl wrote:

I guess you search for something like this:

function(info)
 set(msg)
 foreach(i RANGE ${ARGC})
 set(msg ${msg}${ARGV${i}})
 endforeach()
 message(STATUS [info] ${msg})
endfunction()

message(Foo:bar;baz space FOO)
info(Foo:bar;baz space FOO)
message(two words)
info(two words)

which yields the following output:

Foo:bar;baz spaceFOO
-- [info] Foo:bar;baz spaceFOO
twowords
-- [info] twowords

The IN LISTS signature of foreach seems to do additional list splitting,
leading to (foo;bar baz) appearing as 3 elements. Accessing the ARGV array
by the positional indices (e.g. ${ARGV0}) prevents the splitting.


Really? That... is surprising. I thought the whole point of 'IN LISTS' 
was to take a variable that already contains a list and NOT do 
additional splitting (the way 'foreach(NAME ${LIST})' would)...


--
Matthew

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-09 Thread Johannes Zarl
I guess you search for something like this:

function(info)
set(msg)
foreach(i RANGE ${ARGC})
set(msg ${msg}${ARGV${i}})
endforeach()
message(STATUS [info] ${msg})
endfunction()

message(Foo:bar;baz space FOO)
info(Foo:bar;baz space FOO)
message(two words)
info(two words)

...which yields the following output:

Foo:bar;baz spaceFOO
-- [info] Foo:bar;baz spaceFOO
twowords
-- [info] twowords

The IN LISTS signature of foreach seems to do additional list splitting, 
leading to (foo;bar baz) appearing as 3 elements. Accessing the ARGV array 
by the positional indices (e.g. ${ARGV0}) prevents the splitting.

HTH,
  Johannes

On Wednesday, 9. October 2013, 05:33:26, Clark WANG wrote:
 On Sat, Oct 5, 2013 at 1:38 AM, Matthew Woehlke
 matthew.woeh...@kitware.com
 
  wrote:
  
  On 2013-09-27 04:18, Clark WANG wrote:
  I'm trying to write some MESSAGE() wrappers like info(), warning(),
  fatal(), etc which may be a bit easier to use. But I failed to simulate
  the
  correct MESSAGE() behavior no matter I use MACRO or FUNCTION. For
  example: [snip]
  
  FUNCTION vs MACRO shouldn't make a difference in argument parsing AFAIK.
  The difference is primarily that FUNCTION creates a scope, while MACRO
  operates in the scope from which it is called.
  
  The behavior of MESSAGE seems to concatenate multiple arguments with no
  separators. So maybe you could do something like:
  
  set(msg )
  foreach(part IN LISTS ARGN)
  
set(msg ${msg}{$part})
  
  endforeach()
  # ...do stuff with ${msg}
 
 This does not work either. For example:
 
 $ cat CMakeLists.txt
 cmake_minimum_required(VERSION 2.8)
 
 FUNCTION(info_f)
 set(msg )
 foreach(part IN LISTS ARGN)
   set(msg ${msg}${part})
   endforeach()
 message([info_f] ${msg})
 ENDFUNCTION()
 
 MACRO(info_m)
 set(msg )
 foreach(part IN LISTS ARGN)
   set(msg ${msg}${part})
   endforeach()
 message([info_m] ${msg})
 ENDMACRO()
 
 message(foo;bar)
 info_f(foo;bar)
 info_m(foo;bar)
 $ cmake .
 foo;bar
 [info_f] foobar
 [info_m]
 $
 
  (I like ARGN since it is 'unnamed positional arguments'. Since you have
  no named arguments, ARGV == ARGN, but generally speaking I can't think
  of why you'd ever need to use ARGV.)
 
 Good point.
 
  --
  Matthew
  
  --
  
  Powered by www.kitware.com
  
  Please keep messages on-topic and check the CMake FAQ at:
  http://www.cmake.org/Wiki/**CMake_FAQhttp://www.cmake.org/Wiki/CMake_FAQ
  
  
  Kitware offers various services to support the CMake community. For more
  information on each offering, please visit:
  
  CMake Support:
  http://cmake.org/cmake/help/**support.htmlhttp://cmake.org/cmake/help/s
  upport.html CMake Consulting:
  http://cmake.org/cmake/help/**consulting.htmlhttp://cmake.org/cmake/hel
  p/consulting.html CMake Training Courses:
  http://cmake.org/cmake/help/**training.htmlhttp://cmake.org/cmake/help/
  training.html
  
  Visit other Kitware open-source projects at http://www.kitware.com/**
  opensource/opensource.htmlhttp://www.kitware.com/opensource/opensource.h
  tml
  
  Follow this link to subscribe/unsubscribe:
  http://www.cmake.org/mailman/**listinfo/cmakehttp://www.cmake.org/mailma
  n/listinfo/cmake

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-09 Thread Clark WANG
On Wed, Oct 9, 2013 at 7:44 PM, Johannes Zarl johannes.z...@jku.at wrote:

 I guess you search for something like this:

 function(info)
 set(msg)
 foreach(i RANGE ${ARGC})
 set(msg ${msg}${ARGV${i}})
 endforeach()
 message(STATUS [info] ${msg})
 endfunction()

 message(Foo:bar;baz space FOO)
 info(Foo:bar;baz space FOO)
 message(two words)
 info(two words)

 ...which yields the following output:

 Foo:bar;baz spaceFOO
 -- [info] Foo:bar;baz spaceFOO
 twowords
 -- [info] twowords

 The IN LISTS signature of foreach seems to do additional list splitting,
 leading to (foo;bar baz) appearing as 3 elements. Accessing the ARGV
 array
 by the positional indices (e.g. ${ARGV0}) prevents the splitting.


This works. Thank you so much.


 HTH,
   Johannes

 On Wednesday, 9. October 2013, 05:33:26, Clark WANG wrote:
  On Sat, Oct 5, 2013 at 1:38 AM, Matthew Woehlke
  matthew.woeh...@kitware.com
 
   wrote:
  
   On 2013-09-27 04:18, Clark WANG wrote:
   I'm trying to write some MESSAGE() wrappers like info(), warning(),
   fatal(), etc which may be a bit easier to use. But I failed to
 simulate
   the
   correct MESSAGE() behavior no matter I use MACRO or FUNCTION. For
   example: [snip]
  
   FUNCTION vs MACRO shouldn't make a difference in argument parsing
 AFAIK.
   The difference is primarily that FUNCTION creates a scope, while MACRO
   operates in the scope from which it is called.
  
   The behavior of MESSAGE seems to concatenate multiple arguments with no
   separators. So maybe you could do something like:
  
   set(msg )
   foreach(part IN LISTS ARGN)
  
 set(msg ${msg}{$part})
  
   endforeach()
   # ...do stuff with ${msg}
 
  This does not work either. For example:
 
  $ cat CMakeLists.txt
  cmake_minimum_required(VERSION 2.8)
 
  FUNCTION(info_f)
  set(msg )
  foreach(part IN LISTS ARGN)
set(msg ${msg}${part})
endforeach()
  message([info_f] ${msg})
  ENDFUNCTION()
 
  MACRO(info_m)
  set(msg )
  foreach(part IN LISTS ARGN)
set(msg ${msg}${part})
endforeach()
  message([info_m] ${msg})
  ENDMACRO()
 
  message(foo;bar)
  info_f(foo;bar)
  info_m(foo;bar)
  $ cmake .
  foo;bar
  [info_f] foobar
  [info_m]
  $
 
   (I like ARGN since it is 'unnamed positional arguments'. Since you have
   no named arguments, ARGV == ARGN, but generally speaking I can't think
   of why you'd ever need to use ARGV.)
 
  Good point.
 
   --
   Matthew
  
   --
  
   Powered by www.kitware.com
  
   Please keep messages on-topic and check the CMake FAQ at:
   http://www.cmake.org/Wiki/**CMake_FAQ
 http://www.cmake.org/Wiki/CMake_FAQ
   
  
   Kitware offers various services to support the CMake community. For
 more
   information on each offering, please visit:
  
   CMake Support:
   http://cmake.org/cmake/help/**support.html
 http://cmake.org/cmake/help/s
   upport.html CMake Consulting:
   http://cmake.org/cmake/help/**consulting.html
 http://cmake.org/cmake/hel
   p/consulting.html CMake Training Courses:
   http://cmake.org/cmake/help/**training.html
 http://cmake.org/cmake/help/
   training.html
  
   Visit other Kitware open-source projects at http://www.kitware.com/**
   opensource/opensource.html
 http://www.kitware.com/opensource/opensource.h
   tml
  
   Follow this link to subscribe/unsubscribe:
   http://www.cmake.org/mailman/**listinfo/cmake
 http://www.cmake.org/mailma
   n/listinfo/cmake

 --

 Powered by www.kitware.com

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

 Kitware offers various services to support the CMake community. For more
 information on each offering, please visit:

 CMake Support: http://cmake.org/cmake/help/support.html
 CMake Consulting: http://cmake.org/cmake/help/consulting.html
 CMake Training Courses: http://cmake.org/cmake/help/training.html

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

 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-08 Thread Clark WANG
On Sat, Oct 5, 2013 at 1:38 AM, Matthew Woehlke matthew.woeh...@kitware.com
 wrote:

 On 2013-09-27 04:18, Clark WANG wrote:

 I'm trying to write some MESSAGE() wrappers like info(), warning(),
 fatal(), etc which may be a bit easier to use. But I failed to simulate
 the
 correct MESSAGE() behavior no matter I use MACRO or FUNCTION. For example:
 [snip]


 FUNCTION vs MACRO shouldn't make a difference in argument parsing AFAIK.
 The difference is primarily that FUNCTION creates a scope, while MACRO
 operates in the scope from which it is called.

 The behavior of MESSAGE seems to concatenate multiple arguments with no
 separators. So maybe you could do something like:

 set(msg )
 foreach(part IN LISTS ARGN)
   set(msg ${msg}{$part})
 endforeach()
 # ...do stuff with ${msg}


This does not work either. For example:

$ cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

FUNCTION(info_f)
set(msg )
foreach(part IN LISTS ARGN)
  set(msg ${msg}${part})
  endforeach()
message([info_f] ${msg})
ENDFUNCTION()

MACRO(info_m)
set(msg )
foreach(part IN LISTS ARGN)
  set(msg ${msg}${part})
  endforeach()
message([info_m] ${msg})
ENDMACRO()

message(foo;bar)
info_f(foo;bar)
info_m(foo;bar)
$ cmake .
foo;bar
[info_f] foobar
[info_m]
$


 (I like ARGN since it is 'unnamed positional arguments'. Since you have no
 named arguments, ARGV == ARGN, but generally speaking I can't think of why
 you'd ever need to use ARGV.)


Good point.


 --
 Matthew

 --

 Powered by www.kitware.com

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

 Kitware offers various services to support the CMake community. For more
 information on each offering, please visit:

 CMake Support: 
 http://cmake.org/cmake/help/**support.htmlhttp://cmake.org/cmake/help/support.html
 CMake Consulting: 
 http://cmake.org/cmake/help/**consulting.htmlhttp://cmake.org/cmake/help/consulting.html
 CMake Training Courses: 
 http://cmake.org/cmake/help/**training.htmlhttp://cmake.org/cmake/help/training.html

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

 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/**listinfo/cmakehttp://www.cmake.org/mailman/listinfo/cmake

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] How to write a correct wrapper of MESSAGE()?

2013-10-04 Thread Matthew Woehlke

On 2013-09-27 04:18, Clark WANG wrote:

I'm trying to write some MESSAGE() wrappers like info(), warning(),
fatal(), etc which may be a bit easier to use. But I failed to simulate the
correct MESSAGE() behavior no matter I use MACRO or FUNCTION. For example:
[snip]


FUNCTION vs MACRO shouldn't make a difference in argument parsing AFAIK. 
The difference is primarily that FUNCTION creates a scope, while MACRO 
operates in the scope from which it is called.


The behavior of MESSAGE seems to concatenate multiple arguments with no 
separators. So maybe you could do something like:


set(msg )
foreach(part IN LISTS ARGN)
  set(msg ${msg}{$part})
endforeach()
# ...do stuff with ${msg}

(I like ARGN since it is 'unnamed positional arguments'. Since you have 
no named arguments, ARGV == ARGN, but generally speaking I can't think 
of why you'd ever need to use ARGV.)


--
Matthew

--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


[CMake] How to write a correct wrapper of MESSAGE()?

2013-09-27 Thread Clark WANG
I'm trying to write some MESSAGE() wrappers like info(), warning(),
fatal(), etc which may be a bit easier to use. But I failed to simulate the
correct MESSAGE() behavior no matter I use MACRO or FUNCTION. For example:

  MACRO(info_mac_1)
  message([MACRO 1]  ${ARGV})
  ENDMACRO()
  MACRO(info_mac_2)
  message([MACRO 2]  ${ARGV})
  ENDMACRO()
  FUNCTION(info_fun_1)
  message([FUNC 1]  ${ARGV})
  ENDFUNCTION()
  FUNCTION(info_fun_2)
  message([FUNC 2]  ${ARGV})
  ENDFUNCTION()

  message(foo;bar)
  info_mac_1(foo;bar)

  message(foo bar)
  info_mac_2(foo bar)

  message(foo;bar)
  info_fun_1(foo;bar)

  message(foo bar)
  info_fun_2(foo bar)

The output (tested with 2.8.8) would be like this:

  foo;bar
  [MACRO 1] foobar
  foobar
  [MACRO 2] foo;bar
  foo;bar
  [FUNC 1] foobar
  foobar
  [FUNC 2] foo;bar

As you can see all the 4 commands I defined did not work the same way as
MESSAGE(). So how should I define a correct wrapper on MESSAGE()?

Thanks.

-Clark
--

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake