2012-11-14 58 views
1

我试图使用宏()命令的上下文不敏感的字符串替换,但这样的:宏()没有做字符串替换?

cmake_minimum_required(VERSION 2.8) 

MACRO(TestMacro mystring) 
    message(mystring) 
endmacro() 

TestMacro("hello world") 

message("hello world") 

输出:

了mystring 的hello world

而不是

hello world hello world

正如我所料。任何人都可以看到我做错了什么?

回答

1

尝试取消引用宏参数:

MACRO(TestMacro mystring) 
    message(${mystring}) 
endmacro() 

另见Syntax Introduction

+0

那个解除引用的参数可以与其他文本串联吗?例如,我真正想要做的是创建一个名为MyArgumentLibs的变量。如果我做 MACRO(TestMacro MyArgument) 集($ {} MyArgument利布斯 “东西”) endmacro() TestMacro(大卫) 是,这样做,我期望是什么? (即与David LIibs“东西”相同) 正如您所描述的,它看起来更像是一个正常的函数,其中的变量被传递的不是真正的“宏”,而是C风格的意义上的# -macro它实际上只是盲目地用一个字符串代替另一个字符串。 –

+0

yes。使用类似于你所描述的内容:set($ {value} _Blah“Value”) – Doug

+0

@Doug - 那么当我想要获得(){“{$ {MyArgument} Libs}? –