Unfortunately, this entire discussion nicely demonstrates and
reinforces my belief that we ought not to do this == thing...
If Alex, Brad, Matthew and I can't understand each other's meanings
within the context of this discussion, what chance does a poor user
reading through the CMake IF documentation have of getting it right?
Adding a new better way to do something without eliminating the old
not-so-good way of doing the same thing is not necessarily a good
thing. Multiple ways to do things just make people shake their heads
and ask "Why?"
I am still voting no on this one.
David C.
-----Original Message-----
From: Alexander Neundorf <neund...@kde.org>
To: cmake-developers <cmake-developers@cmake.org>
Sent: Thu, Mar 21, 2013 2:43 pm
Subject: Re: [cmake-developers] if (FOO == BAR) ...
On Thursday 21 March 2013, Matthew Woehlke wrote:
On 2013-03-20 17:42, Alexander Neundorf wrote:
> On Wednesday 20 March 2013, Matthew Woehlke wrote:
>> On 2013-03-20 17:10, David Cole wrote:
>>> Are you proposing that == behaves as STREQUAL, or as EQUAL?
>>
>> What's the difference?
>>
>> Okay, for <, >, there is an obvious answer, but for ==, I am
trying and
>> failing to think of a situation where treating the arguments as
numbers
>> would give a different result vs. treating them as strings.
>
> E.g. "0" vs. "0.0"
Is "0.0" a floating-point number or a version string? In the context
of
CMake, I would have rather expected it to be the latter. (Does CMake
even understand floating point?) If '==' assumes numbers, how do I
tell
it I really meant a version string?
EQUAL tries to convert to double:
if (argP1 != newArgs.end() && argP2 != newArgs.end() &&
(*(argP1) == "LESS" || *(argP1) == "GREATER" ||
*(argP1) == "EQUAL"))
{
def = cmIfCommand::GetVariableOrString(arg->c_str(), makefile);
def2 = cmIfCommand::GetVariableOrString((argP2)->c_str(),
makefile);
double lhs;
double rhs;
bool result;
if(sscanf(def, "%lg", &lhs) != 1 ||
sscanf(def2, "%lg", &rhs) != 1)
My "==" implementation simply compares the strings on both sides in the
most
simple and straightforward way.
Alex
--
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
--
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