[Qgis-developer] Link issues on mac

John C. Tull john.tull at wildnevada.org
Thu Apr 3 16:24:30 EDT 2008


Tom,

I tried your patch and got an error. I am on rev 8315 also, so this  
might be a problem with how I tried to patch. I put your patch text in  
a file 'mac.diff' in the root of my svn directory.

patch -p0 < mac.diff
patching file cmake/FindExpat.cmake
patch: **** malformed patch at line 31: FIND_LIBRARY(EXPAT_LIBRARY  
NAMES expat libexpat PATHS

John

On Apr 3, 2008, at 12:39 PM, Tom Elwertowski wrote:
> Hi Tim and William,
>
> I found the source of the FindGEOS.cmake and FindProj.cmake Mac  
> problem. The addition of the NO_DEFAULT_PATH flag to FIND_* made the  
> files framework-unfriendly.
>
> The geos.h header is also missing from the GEOS framework. The file  
> is not used by qgis but FindGEOS.cmake references it to locate GEOS.  
> I have changed the cmake search reference to geos_c.h which is  
> present (and also not used by qgis).
>
> NO_DEFAULT_PATH was added to force searching of specified paths  
> before default paths. /usr/lib paths but not /Library/Frameworks  
> were then explicitly added.
>
> The Cmake documentation recommends calling FIND twice to achieve the  
> same effect. First with only nonstandard paths and the  
> NO_DEFAULT_PATH flag. Then again with no specified paths to search  
> the default locations. When an earlier FIND succeeds, later FINDs  
> for the same item do nothing.
>
> The multiple FIND method avoids the need to list standard paths (and  
> perhaps forget about frameworks). It is also compatible with the  
> CMAKE_FIND_FRAMEWORK setting which might be LAST, ONLY or NEVER  
> rather then the default FIRST. (Hardcoding the all path permutations  
> would look awful.)
>
> Since the default paths were inserted into the middle of the  
> nonstandard paths, apparently for mingw and perhaps msvc too, I have  
> attached the Mac fix as a patch to be verified and perhaps adjusted  
> for those systems before being submitted to svn. Perhaps a third  
> FIND is needed if the defaults really need to be in the middle of  
> the list.
>
> Tom
>
>
> Tom Elwertowski wrote:
>> When I run cmake, I get the following message:
>> CMake Error: This project requires some variables to be set,
>> and cmake can not find them.
>> Please set the following variables:
>> GEOS_INCLUDE_DIR
>> GEOS_LIBRARY
>> PROJ_INCLUDE_DIR
>> PROJ_LIBRARY
> Index: cmake/FindExpat.cmake
> ===================================================================
> --- cmake/FindExpat.cmake	(revision 8315)
> +++ cmake/FindExpat.cmake	(working copy)
> @@ -7,29 +7,26 @@
> #    EXPAT_INCLUDE_DIR
> #    EXPAT_LIBRARY
>
> -# Normally there is no need to specify /usr/... paths because
> -# cmake will look there automatically. However the NO_DEFAULT_PATH
> -# prevents this behaviour allowing you to use no standard file
> -# locations in preference over standard ones. Note in this case
> -# you then need to explicitly add /usr and /usr/local prefixes
> -# to the search list. This applies both to FIND_PATH and FIND_LIBRARY
> -FIND_PATH(EXPAT_INCLUDE_DIR expat.h
> +# FIND_PATH and FIND_LIBRARY normally search standard locations
> +# before the specified paths. To search non-standard paths first,
> +# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
> +# and then again with no specified paths to search the default
> +# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
> +# searching for the same item do nothing.
> +FIND_PATH(EXPAT_INCLUDE_DIR expat.h
>   "$ENV{LIB_DIR}/include/"
>   "$ENV{LIB_DIR}/include/expat"
> -  /Users/tim/dev/universal_libs/include
> -  /usr/local/include
> -  /usr/include
>   c:/msys/local/include
>   NO_DEFAULT_PATH
>   )
> +FIND_PATH(EXPAT_INCLUDE_DIR expat.h)
> #libexpat needed for msvc version
> FIND_LIBRARY(EXPAT_LIBRARY NAMES expat libexpat PATHS
>   "$ENV{LIB_DIR}/lib"
> -  /usr/local/lib
> -  /usr/lib
>   c:/msys/local/lib
>   NO_DEFAULT_PATH
>   )
> +FIND_LIBRARY(EXPAT_LIBRARY NAMES expat libexpat)
>
> IF (EXPAT_INCLUDE_DIR AND EXPAT_LIBRARY)
>    SET(EXPAT_FOUND TRUE)
> Index: cmake/FindSqlite3.cmake
> ===================================================================
> --- cmake/FindSqlite3.cmake	(revision 8315)
> +++ cmake/FindSqlite3.cmake	(working copy)
> @@ -7,29 +7,28 @@
> #    SQLITE3_LIBRARY
>
>
> -# Normally there is no need to specify /usr/... paths because
> -# cmake will look there automatically. However the NO_DEFAULT_PATH
> -# prevents this behaviour allowing you to use no standard file
> -# locations in preference over standard ones. Note in this case
> -# you then need to explicitly add /usr and /usr/local prefixes
> -# to the search list. This applies both to FIND_PATH and FIND_LIBRARY
> -FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h
> +# FIND_PATH and FIND_LIBRARY normally search standard locations
> +# before the specified paths. To search non-standard paths first,
> +# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
> +# and then again with no specified paths to search the default
> +# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
> +# searching for the same item do nothing.
> +FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h
>   "$ENV{LIB_DIR}/include"
>   "$ENV{LIB_DIR}/include/sqlite"
> -  /usr/local/include
> -  /usr/include
>   #mingw
>   c:/msys/local/include
>   NO_DEFAULT_PATH
>   )
> +FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h)
>
> -FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3 PATHS
> +FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3 PATHS
>   "$ENV{LIB_DIR}/lib"
> -  /usr/local/lib
> -  /usr/lib
> +  #mingw
>   c:/msys/local/lib
>   NO_DEFAULT_PATH
>   )
> +FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3)
>
> IF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
>    SET(SQLITE3_FOUND TRUE)
> Index: cmake/FindProj.cmake
> ===================================================================
> --- cmake/FindProj.cmake	(revision 8315)
> +++ cmake/FindProj.cmake	(working copy)
> @@ -7,29 +7,28 @@
> #    PROJ_LIBRARY
>
>
> -# Normally there is no need to specify /usr/... paths because
> -# cmake will look there automatically. However the NO_DEFAULT_PATH
> -# prevents this behaviour allowing you to use no standard file
> -# locations in preference over standard ones. Note in this case
> -# you then need to explicitly add /usr and /usr/local prefixes
> -# to the search list. This applies both to FIND_PATH and FIND_LIBRARY
> -FIND_PATH(PROJ_INCLUDE_DIR proj_api.h
> +# FIND_PATH and FIND_LIBRARY normally search standard locations
> +# before the specified paths. To search non-standard paths first,
> +# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
> +# and then again with no specified paths to search the default
> +# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
> +# searching for the same item do nothing.
> +FIND_PATH(PROJ_INCLUDE_DIR proj_api.h
>   "$ENV{LIB_DIR}/include/proj"
>   "$ENV{LIB_DIR}/include"
> -  /usr/local/include
> -  /usr/include
>   #mingw
>   c:/msys/local/include
>   NO_DEFAULT_PATH
>   )
> +FIND_PATH(PROJ_INCLUDE_DIR proj_api.h)
>
> -FIND_LIBRARY(PROJ_LIBRARY NAMES proj PATHS
> +FIND_LIBRARY(PROJ_LIBRARY NAMES proj PATHS
>   "$ENV{LIB_DIR}/lib"
> -  /usr/local/lib
> -  /usr/lib
> +  #mingw
>   c:/msys/local/lib
>   NO_DEFAULT_PATH
>   )
> +FIND_LIBRARY(PROJ_LIBRARY NAMES proj)
>
> IF (PROJ_INCLUDE_DIR AND PROJ_LIBRARY)
>    SET(PROJ_FOUND TRUE)
> Index: cmake/FindGEOS.cmake
> ===================================================================
> --- cmake/FindGEOS.cmake	(revision 8315)
> +++ cmake/FindGEOS.cmake	(working copy)
> @@ -7,29 +7,27 @@
> #    GEOS_LIBRARY
>
>
> -# Normally there is no need to specify /usr/... paths because
> -# cmake will look there automatically. However the NO_DEFAULT_PATH
> -# prevents this behaviour allowing you to use no standard file
> -# locations in preference over standard ones. Note in this case
> -# you then need to explicitly add /usr and /usr/local prefixes
> -# to the search list. This applies both to FIND_PATH and FIND_LIBRARY
> -FIND_PATH(GEOS_INCLUDE_DIR geos.h
> +# FIND_PATH and FIND_LIBRARY normally search standard locations
> +# before the specified paths. To search non-standard paths first,
> +# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
> +# and then again with no specified paths to search the default
> +# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
> +# searching for the same item do nothing.
> +FIND_PATH(GEOS_INCLUDE_DIR geos_c.h
>   "$ENV{LIB_DIR}/include"
> -  /usr/local/include
> -  /usr/include
>   #mingw
>   c:/msys/local/include
>   NO_DEFAULT_PATH
>   )
> +FIND_PATH(GEOS_INCLUDE_DIR geos_c.h)
>
> FIND_LIBRARY(GEOS_LIBRARY NAMES geos PATHS
>   "$ENV{LIB_DIR}/lib"
> -  /usr/local/lib
> -  /usr/lib
>   #mingw
>   c:/msys/local/lib
>   NO_DEFAULT_PATH
>   )
> +FIND_LIBRARY(GEOS_LIBRARY NAMES geos)
>
> IF (GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
>    SET(GEOS_FOUND TRUE)
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer



More information about the Qgis-developer mailing list