Brad King wrote: > The entire expression must still be quoted and have its internal syntax > escaped through the CMake language. We could use single quotes instead: > > set_property(TARGET foolib > [APPEND] PROPERTY INCLUDE_DIRECTORIES > "$<$<STREQUAL 'a' '\"'> '/bar bat/bag'>" > ) > > for quoting inside generator expressions.
Yes. >> set_target_properties(foolib >> PROPERTIES COMPILE_OPTIONS >> "$<$<CONFIG:Debug>:-Wl$<COMMA>no-undefined>" >> ) > > That is a good example of a reason not to use comma for separation. Yes. It makes it a non-starter IMO. >> Looking at my keyboard, how about '?' '|' '\'' '#' or '*'? > Yes, I think comma was most readable, but it's a non-starter. > I don't think any of them is particularly readable. Using whitespace > and quoting will allow free-form arrangement for readability. >From earlier: > One way to distinguish expressions with free-form arguments from > those without is whether there is a ':' or whitespace after the > expression name. This isn't very clear to me. Should ':' be part of the syntax which is always needed? Or only needed in disambiguation cases? I'm not in favor of syntax which is only used in a small subset of expressions only for disambiguation. If ':' must appear after the expression name sometimes, then it should have to be there all the time. > If we > define the rules carefully so that $<> protects internal quotes then > we can go back to the if/then/else approach I previously discarded: > > "$<IF 'cond-expr' 'then-expr' 'else-expr'>" > You mean an evolution of this? http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/3615/focus=3756 So if we reintroduce IF, we'll en up with something like this: 1) "$<IF $<CONFIG Release> /rel/ease /de/bug>" 2) "$<IF $<BOOL $<TARGET_PROPERTY WIN32_EXECUTABLE> > Qt5::WinMain>" 3) "$<IF $<BOOL $<TARGET_PROPERTY" "WIN32_EXECUTABLE> > Qt5::WinMain>" 4) "$<IF $<BOOL $<TARGET_PROPERTY WIN32_EXECUTABLE> > Qt5::WinMain>" 5) "$<IF $<AND $<BOOL $<TARGET_PROPERTY WIN32_EXECUTABLE> > $<STREQUAL $<TARGET_PROPERTY TYPE> EXECUTABLE> > Qt5::WinMain>" ? I guess 3 won't work, but 4 would be used instead? I think I can adapt the parser to that. That also means discarding the $<0:...> and $<1:...> basis for all of it, and possibly deprecating the use of ':' as a delimiter for the existing expressions like TARGET_FILE? I can probably do that in the parser too. Thanks, Steve. -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers