On 27.01.11 16:13:09, arrowdodger wrote:
> Hello. On FreeBSD everything, that distributes with system goes to /usr (i
> mean includes go to /usr/includes and libs to /usr/lib) and all 3d party
> stuff goes to /usr/local.
> And the compiler is intentionally set to look only in /usr/include. The same
> is for linker - it's looking for libs only in /usr/lib by default. So, if
> user want to use some 3d-party library, he should add -I/usr/local/include
> and -L/usr/local/lib to build command.
> 
> Now, i'm using find_library() and find_path() to locate 3d-party library in
> such way:
> 
> > find_path(FFI_INCLUDE_PATH ffi.h PATHS ${USER_DEFINED_INCLUDE_DIR})
> > find_library(FFI_LIBRARY_PATH ffi PATHS ${USER_DEFINED_LIB_DIR})
> >
> I'm expecting that search will not succeed until i supply CMake with
> additional directories to search. But it's succeeds because
> CMAKE_SYSTEM_PREFIX_PATH from Modules/Platform/UnixPaths.cmake is set to
> "/usr;/usr/local;/". And this file is included by
> Modules/Platform/FreeBSD.cmake.
> 
> Later i'm doing:
> 
> > if(${USER_DEFINED_INCLUDE_DIR})
> >   include_directories(${FFI_INCLUDE_DIR})
> > endif()
> >
> 
> On FreeBSD it leads to "No such file or directory: ffi.h" error. So here is
> the question: Is this a CMake bug?

No, the bug is in your cmake code. You shouldn't use
USER_DEFINED_INCLUDE_DIR to decide wether to add the path to the
include-directories or not. Instead use the FFI_INCLUDE_PATH variable to
decide that, it won't hurt if FFI_INCLUDE_PATH happens to be /usr/include.

The reason cmake searches in /usr/local in addition to /usr is simply a
convenience matter. Its a common prefix to have non-distribution software
installed in and for the same reason things like /opt/local, /opt/csw and
/usr/openwin are being searched for by default.

Andreas

-- 
Beware of a dark-haired man with a loud tie.
_______________________________________________
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://www.cmake.org/mailman/listinfo/cmake

Reply via email to