Alan W. Irwin wrote:
On 2008-03-23 16:58-0400 Miguel A. Figueroa-Villanueva wrote:
On Sun, Mar 23, 2008 at 3:46 PM, Alan W. Irwin wrote:
The difference is caused because FindwxWidgets delivers
wxWidgets_DEFINITIONS as a blank delimited string for 2.4.8 and as a
list
for the cvs version.
Hello Alan,
Sorry for the confusion. This change was made as a bug fix to resolve
a problem reported to the list. Can't remember the error that was
generated, but it was possibly to handle spaces in definitions (i.e.,
-DFOO="A space containing string") or some of the other variables. You
can see the patch applied at:
http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/FindwxWidgets.cmake?root=CMake&r1=1.7&r2=1.8
Yes, it appears to be a classic case of it being impossible to address one
important issue without creating a backwards incompatibility.
The problem is that it seems you are using (abusing?) the use of the
interface variables. That is, you are not using ADD_DEFINITIONS and
INCLUDE_DIRECTORIES, but building the compile flags directly?
Yes. The problem with INCLUDE_DIRECTORIES (and ADD_DEFINITIONS?) is they
apply to everything built in that directory. I far prefer to use explicit
compile flags for each shared object I am building in that directory.
[out of order for clarity] In sum, Bill, I hope you consider making
separate module releases to
absolutely insure backwards module compatibility for those who stick
with a
particular module release while being allowed to change cmake
version. This
would also have the simultanous benefit of freeing the module
developers to
get on with improving the modules without enforcing strict backwards
compatibility.
Although I understand what you are pointing out, I'm not sure that
this is good in the sense that there is a maintainence overhead added.
It would be some extra work to set this up for the first time, but if
automated properly, I don't think there would be a lot of on-going work
once
this was set up.
[...]That said, I do believe the find modules should have a process to
deprecate variables and evolve... I'm just not sure if we want an
independent release schedule.
Just my $.02...
I agree with the general goal of allowing the modules to evolve in a
reasonable way (such as the change you made) so long as we provide some
mechanism to assure backwards compatibility. My understanding of how Bill
currently handles this issue is he is ultra-cautious about making any
changes to modules _that are released_. In practice this may mean your
greatly improved FindwxWidgets.cmake in cvs will not get into the next
release because of the above demonstrated backwards incompatibility. That
would be a real shame, and I would like to find some other method of
freezing the modules such as providing easy access to previous module
releases. I don't care about the details so long as something is done
about
this issue other than the current virtual freeze on module changes that are
allowed to get into releases.
I don't like to put major changes in modules into patch releases. We are
now working on a major release 2.6, so I am putting in all module
changes. I don't see how having a separate release track for modules
would help things. It would require two separate downloads for CMake?
The number one objection to adopting CMake is having to install CMake
before being able to build a project. I don't want to make that
download any more complicated. If someone wants a fix in a module, it
is very easy to copy the module into the project and override the one in
CMake.
I will have to look into this space vs. ; separation issue. I do think
plplot is abusing things a bit, and should not be constructing -I stuff,
as it may not be portable to IDE's and other compilers in the future.
Some compiler may not even know what -I is. CMake is supposed to hide
low level things like that from the user. I am aware of the issue with
target vs. directory level includes and defines, and at some point it
will get fixed with a target property. For now, I would recommend that
projects use the directory level includes and defines if at all possible
as it will be much more portable.
I am thinking that maybe I can add some checks into the wx stuff to look
for spaces in the define list, and only then separate with ;. This can
not break any project because it will still be space separated unless
there is something with a space. The something with a space would have
been broken anyway, and no project could have depended on it working
that way.
-Bill
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake