Andreas Pakulat wrote:
Hi,

just wanted to let interested parties know that I've added a new version
of FindBoost.cmake to bug #6257. It fixes a few bugs I still had in
v2.

I'd delete the existing versions, but unfortunately CMake's bugtracker
doesn't allow to do that.

Last but not least: Is there any chance of getting this into CMake
2.6.0? Or is it too late?

I cross-posted here with my own updates a few days ago, but only Andreas replied last time.

I still have some issues with the current version (assuming it is the same as the one in KDE's trunk), due to the prefix searching. I guess this could be fixed by looping through the prefixes twice, once for NO_DEFAULT_PATHS and once without. My solution was to assign two different variables for each FIND_PATH type (with and without default paths) and prefer anything found by NO_DEFAULT_PATHS.

I'm also not too sure about moving the check-for-the-right-version test out from the find loop, but I guess that only breaks if a NO_DEFAULT_PATHS install has no prefix and is older than an install that would be found later, which is probably rare.

Here's my current diff:

$ svn di -x --ignore-all-space
Index: cmake/modules/FindBoost.cmake
===================================================================
--- cmake/modules/FindBoost.cmake       (revision 792407)
+++ cmake/modules/FindBoost.cmake       (working copy)
@@ -235,7 +235,6 @@


   FOREACH(_boost_VER ${_boost_TEST_VERSIONS})
-    IF( NOT Boost_INCLUDE_DIR )

# Add in a path suffix, based on the required version, ideally we could # read this from version.hpp, but for that to work we'd need to know the include
@@ -250,20 +249,25 @@
STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)" "\\1_\\2" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX})
       ENDIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")

-
       #Prefer our include search paths
-      FIND_PATH(Boost_INCLUDE_DIR
+      FIND_PATH(Boost_PREFERRED_INCLUDE_DIR
           NAMES         boost/config.hpp
           PATHS         ${_boost_INCLUDE_SEARCH_DIRS}
           PATH_SUFFIXES ${_boost_PATH_SUFFIX}
           NO_DEFAULT_PATH
       )
       #If nothing is found search again using system default paths
-      FIND_PATH(Boost_INCLUDE_DIR
+      FIND_PATH(Boost_FALLBACK_INCLUDE_DIR
           NAMES         boost/config.hpp
-          PATHS         ${_boost_INCLUDE_SEARCH_DIRS}
           PATH_SUFFIXES ${_boost_PATH_SUFFIX}
       )
+      IF( Boost_PREFERRED_INCLUDE_DIR )
+        SET( Boost_INCLUDE_DIR ${Boost_PREFERRED_INCLUDE_DIR} )
+      ELSEIF( Boost_FALLBACK_INCLUDE_DIR )
+        SET( Boost_INCLUDE_DIR ${Boost_FALLBACK_INCLUDE_DIR} )
+      ELSE( Boost_PREFERRED_INCLUDE_DIR )
+        SET( Boost_INCLUDE_DIR Boost_INCLUDE_DIR-NOTFOUND )
+      ENDIF( Boost_PREFERRED_INCLUDE_DIR )

       IF(Boost_INCLUDE_DIR)
         # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp
@@ -287,7 +291,6 @@
         ENDIF(NOT "${Boost_VERSION}" STREQUAL "0")
       ENDIF(Boost_INCLUDE_DIR)

-    ENDIF( NOT Boost_INCLUDE_DIR )
   ENDFOREACH(_boost_VER)

   #Setting some more suffixes for the library


--
Matthew
I think I want my tombstone to read:
<name>
Process created <date of birth>
Signal 15 received <date of death>

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

Reply via email to