On 26.09.10 21:31:20, Szilárd Páll wrote:
> I figured out something that makes me even more puzzled. The following
> does _not_ work as expected::
> 
> set(DEPS "dep1 dep2 dep3")
> add_dependencies(foo bar
>                                 ${DEPS})
> 
> Target "foo" gets only dependent on bar and not dep1,2,3. On the other
> hand, manually listing the latter instead of using the DEPS variable
> works as well as adding them one-by-one in a loop (where also a
> variables is used).
> 
> This seems to be _extremely_counterintuitive! Is there some sort of
> CMake black-magic or basic rule that I don't know of?

No black magic, just cmake's rules about variable contents.
Basically CMake has only 1 type of variable value, thats a string. What
you created above is a string variable "DEPS" with the value "dep1 dep2
dep3", i.e. a single string consisting of 3 words separated by spaces.
Some strings are considered to be a list if you use a cmake command that
expects a list, these strings need to separate each list entry with a
semicolon.If you use

set(DEPS dep1 dep2 dep3)

then CMake will create DEPS as a string containing a list with those 3
words. What should also work is 

set(DEPS "dep1;dep2;dep3")

as that should create a list in the variable DEPS.

The CMake Manual under the set() command also explains this.

Andreas

-- 
Your motives for doing whatever good deed you may have in mind will be
misinterpreted by somebody.
_______________________________________________
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

Reply via email to