Brad King wrote:

> On 08/13/2012 09:09 AM, Stephen Kelly wrote:
>> I uploaded a compromise compile-definitions-unique branch to my gitorious
>> ([email protected]:~steveire/cmake/steveires-
cmake.git)
>> which stores the unescaped definition in the set, and escapes it in the
>> JoinDefines method.
> 
> Even better, thanks.

I have not yet merged this to next yet because I thought that in its current 
form, it might not create really unique defines. On further investigation I 
might have found some dead code.

Reading this comment:

      // Make the definition appear properly on the command line.  Use
      // -DNAME="value" instead of -D"NAME=value" to help VS6 parser.

I thought that I could make -DNAME="value" appear twice with this code:

 add_definitions(-D"NAME=Value" -DNAME="Value")

I found that not only does it not de-duplicate, it does 
not convert -D"NAME=Value" to -DNAME="Value", as I expected from the 
comment. It turns out that the -D"NAME=Value" does not get as far as the 
AppendDefines method, and is treated as a raw flag, not a define:

build{master}$ cat CMakeFiles/foo.dir/flags.make 
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 2.8

# compile CXX with /usr/lib/icecc/bin/c++
CXX_FLAGS =   -D"NAME=Value"

CXX_DEFINES = -DNAME=\"Value\"


This might be intentional, but then the code in AppendDefines is dead and 
should be removed. If it is unintentional, then I have found a bug.

There is still Watcom escaping which I did not test though. As the current 
patch stores unescaped defines, the escaped defines may not be unique. I 
could fix it with another std::set and loop in JoinDefines (maybe just if 
WatcomWMake, depending on whether the above is a bug or not). Is it worth 
it?

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

Reply via email to