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? Or it's wrong to assume that headers and library are in compiler's default search path if CMake finds them without user's help?
_______________________________________________ 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