No subject


Wed May 9 12:08:04 EDT 2012


> 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.




More information about the cmake-developers mailing list