Andreas Pakulat wrote:
On 01.04.08 16:37:42, Matthew Woehlke wrote:
Andreas Pakulat wrote:
On 31.03.08 20:14:00, Matthew Woehlke wrote:
Also note that those variables you use in
find_path are automatically cached and I don't think they should appear
in it.

Apart from that, you're iterating over all test versions, thats
unecessary.
Um... no. Here's what happens without the patch:

Exactly what I suspected. So would you mind explaining why you can't use
the version in /usr?

It's too old :-).

I'd just like to know wether the script might
actually need a minimum as well as a maximum number, because boost
doesn't play by the rules and breaks source/binary compatibility.

Um... doesn't it already have a minimum version number? The problem is, users of FindBoost don't always DTRT and set it. (I guess you meant adding a maximum number?)

The previous version checked and rejected versions that didn't meet the minimum version number, so in a sense you might say we've gone backwards. But I think preferring BOOST_ROOT over /usr should be sufficient; presumably if you set BOOST_ROOT you know what you are doing, and intend for that to be used. This also works when users don't set the minimum version number.

If you add a maximum version number, I think you'll need to re-add rejecting wrong versions *inside* the find loop. Or keep my way and trust the user to set BOOST_ROOT or one of the other preferred-path indicators appropriately.

Here's an updated patch (note that I used --ignore-all-spaces to diff so the indentation changes don't make it noisier than it needs to be):

Which still has the two problems

a) it puts two completely useless variables into the cache

There should be a way to clear them after the loop runs? (Are empty variables still cached? What/where is the 'unset' command?)

b) it doesn't break the loop as soon as it finds a proper include dir
(hmm, maybe thats actually needed - I'll have a closer look tomorrow,
need some sleep now).

...which I think is only possible in CMake 2.6 (ok, a moot point for 2.6 FindBoost, but not (yet) for KDE's copy). But I don't see why this is an issue; either it will keep looking because it hasn't found something yet (desired), or else a few useless IF's will be evaluated. I don't think that the latter is sufficiently costly to be a concern.

I'm leaning towards agreement, but am not yet completely convinced that
its absolutely necessary to go on searching for "preferred" paths even
if the system path meets the expectations (i.e. has a version that is
larger than the minimum required).

The alternative is to re-write the loop in two parts; search all suffixes in NO_DEFAULT_PATHS first, then repeat with DEFAULT_PATHS if nothing was found. And I'm fine with that solution as well; it achieves the same effect as my current code with slightly different (perhaps more efficient) flow. Let me know if you'd like me to re-write that way.

--
Matthew
Yesterday, I thought of the best .sig that has ever been contemplated. Alas, I forgot it before I could write it down.

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to