On Dec 19, 2007 12:47 PM, Rodolfo Schulz de Lima <[EMAIL PROTECTED]> wrote: > Brandon Van Every escreveu: > > > You could use a macro to generate a CMake script containing a macro, > > and then call that script. :-) > > Nice... :)
In fact, it turns out you can use an include() to cause it to exist at the point you create the macro. A downside is the number of escapes you have to put into your meta-macro, such as \\\${myvar}. # could figure out whether endline is \n or \r\n for this OS #set(endline "\n") macro(makemacro macro_name) #macro_args ... macro_body if(${ARGC} GREATER 2) set(macro_args ${ARGN}) list(REMOVE_AT macro_args -1) else(${ARGC} GREATER 2) set(macro_args) endif(${ARGC} GREATER 2) if(${ARGC} GREATER 1) set(argn_list ${ARGN}) list(GET argn_list -1 macro_body) #message("macro body") #message("${macro_body}") else(${ARGC} GREATER 1) set(macro_body) endif(${ARGC} GREATER 1) set(mstart "macro(${macro_name} ${macro_args})") set(mend "endmacro(${macro_name})") set(macro_file ${CMAKE_CURRENT_BINARY_DIR}/macro_${macro_name}.cmake) #file(REMOVE ${macro_file}) if(EXISTS ${macro_file}) message("can't create ${mstart}") message(FATAL_ERROR "${macro_file} already exists") endif(EXISTS ${macro_file}) file(WRITE ${macro_file} "${mstart} ${macro_body} ${mend} ") include(${macro_file}) file(REMOVE ${macro_file}) endmacro(makemacro) makemacro(meta string_const " message(\"\\\${string_const}\") ") meta("I can do what I want") C:\devel\src\cbugs\makemacro>cmake -P makemacro.cmake I can do what I want Cheers, Brandon Van Every _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake