[CMake] linker default library path /usr/local/lib on OSX

amine bezzarga abezzarg at gmail.com
Tue Sep 20 19:52:57 EDT 2011


Yes I think I get it, I tried that but it doesn't work either:
install_name_tool -change /usr/local/lib/libirrklang.dylib
./Dependencies/IrrKLangAudioEngine/bin/macosx-gcc/
./Dependencies/IrrKLangAudioEngine/bin/macosx-gcc/libirrklang.dylib

Can you tell me, what can I do to fix the problem ?

On Tue, Sep 20, 2011 at 2:19 AM, Michael Jackson <
mike.jackson at bluequartz.net> wrote:

> Yes. Who ever built the irrklang library has set an "install_name" of
> /usr/local/lib on that library. So it does not matter where the library is
> located. OS X thinks it is in /usr/local/lib.
>     You need to fix how that library is compiled and linked. Does that make
> it clear what is going on?
>
>
> -----
> Mike Jackson                     <http://www.bluequartz.net>
> www.bluequartz.net
> Principal Software Engineer       <mike.jackson at bluequartz.net>
> mike.jackson at bluequartz.net
> BlueQuartz Software               Dayton, Ohio
> Sent from my mobile device.
>
> On Sep 19, 2011, at 19:56, amine bezzarga <abezzarg at gmail.com> wrote:
>
> Yeah, I tried the NO_DEFAULT_PATH option but without success.
> My target_link_library command look like this:
>
> target_link_libraries(${CMAKE_PROJECT_NAME} ${OGRE_LIBRARIES}
> ${OGRE_PLUGIN_LIBRARIES} ${Boost_LIBRARIES} ${OIS_LIBRARIES}
> ${IrrKlang_LIBRARIES})
>
> Here is the otool output of the sound library:
> $ otool -L
> ./Dependencies/IrrKLangAudioEngine/bin/macosx-gcc/libirrklang.dylib
> ./Dependencies/IrrKLangAudioEngine/bin/macosx-gcc/libirrklang.dylib
> (architecture ppc):
>  /usr/local/lib/libirrklang.dylib (compatibility version 1.0.0, current
> version 1.0.0)
> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
> (compatibility version 1.0.0, current version 1.0.0)
>  /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version
> 7.4.0)
> /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version
> 1.0.0)
>  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
> 88.3.3)
> ./Dependencies/IrrKLangAudioEngine/bin/macosx-gcc/libirrklang.dylib
> (architecture i386):
>  /usr/local/lib/libirrklang.dylib (compatibility version 1.0.0, current
> version 1.0.0)
> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
> (compatibility version 1.0.0, current version 1.0.0)
>  /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version
> 7.4.0)
> /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version
> 1.0.0)
>  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
> 88.3.3)
>
> Does it help ?
>
>
> On Mon, Sep 19, 2011 at 1:56 PM, Michael Jackson <<mike.jackson at bluequartz.net>
> mike.jackson at bluequartz.net> wrote:
>
>> My guess is that the audio library has an install path of /usr/local/lib
>> encoded in it. Try posting tue output of otool for the actual audio
>> library.
>>
>> -----
>> Mike Jackson                     <http://www.bluequartz.net><http://www.bluequartz.net>
>> www.bluequartz.net
>> Principal Software Engineer       <mike.jackson at bluequartz.net><mike.jackson at bluequartz.net>
>> mike.jackson at bluequartz.net
>> BlueQuartz Software               Dayton, Ohio
>> Sent from my mobile device.
>>
>> On Sep 18, 2011, at 23:38, Cristobal Navarro < <axischire at gmail.com>
>> axischire at gmail.com> wrote:
>>
>> ok i get your point.
>> mmm. In others words you need something equivalent to rpath command, im
>> pretty sure cmake can handle this easily let me know if the following helps.
>>
>> have you tried adding more options to the find_library command ??
>> for example have you tried this (also, with the PATHS command just to be
>> sure):
>>
>> find_library(IrrKlang_LIBRARIES irrKlang
>> PATHS
>> ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/IrrKLangAudioEngine/bin/macosx-gcc
>>  NO_DEFAULT_PATH
>>  )
>>
>> And what is your "target_link_libraries" command?
>>
>>
>>
>> On Sun, Sep 18, 2011 at 12:33 PM, amine bezzarga < <abezzarg at gmail.com><abezzarg at gmail.com>
>> abezzarg at gmail.com> wrote:
>>
>>> The issue is not about finding the library at built time, event if my
>>> library is found in
>>> ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/IrrKLangAudioEngine/bin/macosx-gcc and
>>> after building is done, my app is still looking for the library in
>>> /usr/local/lib at runtime as you can see with the otools output in my first
>>> message.
>>>
>>> I want to find a way to tell the linker to link the library from where it
>>> find it.
>>> Does it make sense ?
>>>
>>> On Sun, Sep 18, 2011 at 4:29 PM, Cristobal Navarro <<axischire at gmail.com><axischire at gmail.com>
>>> axischire at gmail.com> wrote:
>>>
>>>> yes
>>>>
>>>> you have to provide another option
>>>> find_library( IrrKlang_LIBRARIES irrKlang PATHS <path1 to
>>>> library> <path2 to library> ... )
>>>>
>>>>
>>>> <http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_library><http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_library>
>>>> http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_library
>>>>
>>>> is this what you need?
>>>> best regards
>>>> Cristobal
>>>>
>>>>
>>>> On Sun, Sep 18, 2011 at 10:16 AM, amine bezzarga < <abezzarg at gmail.com><abezzarg at gmail.com>
>>>> abezzarg at gmail.com> wrote:
>>>>
>>>>> Hello guys,
>>>>>
>>>>> I added a sound library to my project, So I first created a cmake
>>>>> module to find it
>>>>>
>>>>> MESSAGE(STATUS "Looking for IrrKlang...")
>>>>>
>>>>> find_library(IrrKlang_LIBRARIES irrKlang
>>>>>
>>>>> ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/IrrKLangAudioEngine/bin/macosx-gcc
>>>>>  )
>>>>>
>>>>> find_path(IrrKlang_INCLUDE_DIRS irrKlang.h
>>>>>  ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/IrrKLangAudioEngine/include
>>>>> )
>>>>>
>>>>> IF (IrrKlang_INCLUDE_DIRS AND IrrKlang_LIBRARIES)
>>>>>    SET(IrrKlang_FOUND TRUE)
>>>>> ENDIF (IrrKlang_INCLUDE_DIRS AND IrrKlang_LIBRARIES)
>>>>>
>>>>>
>>>>> IF (IrrKlang_FOUND)
>>>>>    IF (NOT IrrKlang_FIND_QUIETLY)
>>>>>       MESSAGE(STATUS "Found IrrKlang: ${IrrKlang_LIBRARIES}")
>>>>>    ENDIF (NOT IrrKlang_FIND_QUIETLY)
>>>>> ELSE (IrrKlang_FOUND)
>>>>>    IF (IrrKlang_FIND_REQUIRED)
>>>>>       MESSAGE(FATAL_ERROR "Could not find IrrKlang")
>>>>>    ENDIF (IrrKlang_FIND_REQUIRED)
>>>>> ENDIF (IrrKlang_FOUND)
>>>>>
>>>>> Everything works fine exept I can't control from where the library is
>>>>> linked.
>>>>> Why after I build my project OSX is looking for that library in
>>>>> /usr/local/lib ?
>>>>> Is there a way to tell cmake to link the library from where it find it
>>>>> i.e ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/IrrKLangAudioEngine/bin/macosx-gcc
>>>>> ?
>>>>>
>>>>> here is my otool output after building the project
>>>>> $ otool -L ./bin/MacOSX/OgreApp.app/Contents/MacOS/OgreApp
>>>>> ./bin/MacOSX/OgreApp.app/Contents/MacOS/OgreApp:
>>>>> @executable_path/../Frameworks/Ogre.framework/Versions/1.7.1/Ogre
>>>>> (compatibility version 0.0.0, current version 1.7.1)
>>>>>  @executable_path/../Components/libOgreRTShaderSystem.dylib
>>>>> (compatibility version 0.0.0, current version 1.7.1)
>>>>>  @executable_path/../Frameworks/OIS.framework/Versions/A/OIS
>>>>> (compatibility version 1.0.0, current version 1.0.0)
>>>>>  /usr/local/lib/libirrklang.dylib (compatibility version 1.0.0,
>>>>> current version 1.0.0) --> I want cmake to link that lib, because my lib is
>>>>> not there.
>>>>>  /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current
>>>>> version 7.9.0)
>>>>> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>>>>> version 123.0.0)
>>>>>
>>>>> I know I can correct the path with bundleutilities, but the library
>>>>> still need to be copied in /usr/local/lib to be preccessed by
>>>>> bundleutilitities in that case.
>>>>>
>>>>> Do you have any ideas ?
>>>>> Mino
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Powered by <http://www.kitware.com> <http://www.kitware.com>
>>>>> www.kitware.com
>>>>>
>>>>> Visit other Kitware open-source projects at
>>>>> <http://www.kitware.com/opensource/opensource.html><http://www.kitware.com/opensource/opensource.html>
>>>>> 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><http://www.cmake.org/Wiki/CMake_FAQ>
>>>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>>  <http://www.cmake.org/mailman/listinfo/cmake><http://www.cmake.org/mailman/listinfo/cmake>
>>>>> http://www.cmake.org/mailman/listinfo/cmake
>>>>>
>>>>
>>>
>>>
>>>
>> _______________________________________________
>> Powered by <http://www.kitware.com> <http://www.kitware.com>
>> www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> <http://www.kitware.com/opensource/opensource.html><http://www.kitware.com/opensource/opensource.html>
>> 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><http://www.cmake.org/Wiki/CMake_FAQ>
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> <http://www.cmake.org/mailman/listinfo/cmake>
>> http://www.cmake.org/mailman/listinfo/cmake
>>
>>
>
>
> --
> Amine Bezzarga • +33 6 64 89 87 79 • abezzarg at gmail.com • www.gomino.info<http://goog_1766391406>
> <http://gomino.info>
>
>
>


-- 
Amine Bezzarga • +33 6 64 89 87 79 • abezzarg at gmail.com •
www.gomino.info<http://goog_1766391406>
<http://gomino.info>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110921/f205a7ae/attachment-0001.htm>


More information about the CMake mailing list