[CMake] Using a variable as a method name

LaViolette, Alan ALAVIOLETTE at overwatch.textron.com
Fri Jun 1 12:50:25 EDT 2012


Thanks that works great.  I just wrote an eval macro that does that

From: David Cole [mailto:david.cole at kitware.com]
Sent: Friday, June 01, 2012 11:22 AM
To: LaViolette, Alan
Cc: cmake at cmake.org
Subject: Re: [CMake] Using a variable as a method name

Not directly, but as a workaround, you could write that into a file, and then include the file.

i.e.:

file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/tmp.cmake" "BAR_${FOO}(arg1 arg2)")
include(${CMAKE_CURRENT_BINARY_DIR}/tmp.cmake)

You may need to do some quoting and/or escaping to get things working depending on how complex arg1 and arg2 are in reality.

This sort of "eval" functionality has been requested (and denied ;-) before:

  http://public.kitware.com/Bug/view.php?id=4034
  http://public.kitware.com/Bug/view.php?id=11845


HTH,
David


On Fri, Jun 1, 2012 at 11:02 AM, LaViolette, Alan <ALAVIOLETTE at overwatch.textron.com<mailto:ALAVIOLETTE at overwatch.textron.com>> wrote:
Hello

I would like to call a method based on a variable name such as

set( FOO "123")
BAR_${FOO}(arg1 arg2)

would do the same as

BAR_123(arg1 arg2)

Does any way exist to do this in CMake, such as a call() or eval() command?


--
Alan LaViolette
Software Engineering Consultant
OVERWATCH
An Operating Unit of Textron Systems
21660 Ridgetop Circle, Suite 110
Sterling, VA 20166
Office: (703) 437-7651 x 2419<tel:%28703%29%20437-7651%20x%202419>
Fax: (703) 437-0039<tel:%28703%29%20437-0039>
alaviolette at overwatch.textron.com<mailto:alaviolette at overwatch.textron.com>
www.overwatch.com<http://www.overwatch.com>

"WARNING: Documents that can be viewed, printed or retrieved from this E-Mail may contain technical data whose export is restricted by the Arms Export Control Act (Title 22, U.S.C., Sec 2751, et seq,) or the Export Administration Act of 1979, as amended, Title 50, U.S.C., App. 2401 et seq. and which may not be exported, released or disclosed to non-U.S. persons (i.e. persons who are not U.S. citizens or lawful permanent residents ["green card" holders]) inside or outside the United States, without first obtaining an export license.  Violations of these export laws are subject to severe civil, criminal and administrative penalties."


--

Powered by www.kitware.com<http://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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120601/5b31098b/attachment.htm>


More information about the CMake mailing list