On 06/02/2010 10:24 PM, Doug Reiland wrote: > Is there anyway to do in a generic fashion? > For example, I don't know what all the variables are. > I can be certain that they are valid, for example build-dir is set in scope. > However, the string can have several "variables" in it.
The following function EXPAND() replaces all occurrences of "${...}" in INPUT with the current value of the appropriate variable and stores the result in OUTPUT: FUNCTION(EXPAND OUTPUT INPUT) STRING(REGEX MATCH "\\\${[^}]*}" m "${INPUT}") WHILE(m) STRING(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}") STRING(REPLACE "\${${v}}" "${${v}}" INPUT "${INPUT}") STRING(REGEX MATCH "\\\${[^}]*}" m "${INPUT}") ENDWHILE() SET("${OUTPUT}" "${INPUT}" PARENT_SCOPE) ENDFUNCTION() So, e.g., set(foo \${build-dir}/foo.c) and expand(foo ${foo}) with build-dir=/tmp/src yield foo=/tmp/src/foo.c as desired. Regards, Michael > On Wed, Jun 2, 2010 at 3:06 PM, Michael Hertling <mhertl...@online.de> wrote: >> On 06/02/2010 08:37 PM, Doug Reiland wrote: >>> Sorry for another newbie question. >>> >>> Say, to setup a variable as follow so ${build-dir} doesn't get expanded >>> set(foo \${build-dir}/foo.c) >>> >>> How would a expand foo so ${build-dir} gets expanded? >> >> STRING(REPLACE "\${build-dir}" "xyz" foo "${foo}") >> >> Regards, >> >> Michael _______________________________________________ Powered by 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