[CMake] target_link_libraries can't link shared libraries not listed in LD_LIBRARY_PATH
Vyacheslav Karamov
ubuntulist at yandex.ru
Mon Apr 23 07:24:00 EDT 2012
Hi All!
I have a problem with target_link_libraries. It can't link with shared
libraries not from directory listed in LD_LIBRARY_PATH.
1. When I try to link shared library with the full path obtained from
find_library, my library is passed to gcc without -l option as ordinary
object file.
2. When I try to link by specifying short name "cblas" I've got the
error message:
Linking CXX shared library ../../sndcompare/amd64sse3/libsndcompared.so
/usr/bin/ld: cannot find -lcblas
collect2: ld returned 1 exit status
make[2]: *** [../../sndcompare/amd64sse3/libsndcompared.so] Error 1
make[1]: *** [CMakeFiles/sndcompare.dir/all] Error 2
make: *** [all] Error 2
*** Failed ***
OS: Ubuntu 11.10 64 bit
Compiler: g++ 4.6.1.
Cmake 2.8.5
add_library(${lib_name} SHARED
${io_files}
${utils_files}
${tech_independ_files}
${other_files}
)
find_library(atlas
NAME atlas
PATHS
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/atlas/${arch}/lib
DOC "Atlas library"
)
find_library(cblas
NAME cblas
PATHS
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/atlas/${arch}/lib
DOC "Cblas library"
)
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/atlas/${arch}/lib
${CMAKE_CURRENT_SOURCE_DIR}/../../Sphinx/sphinxbase/${CMAKE_SYSTEM_NAME}/${arch}/lib
)
target_link_libraries(${lib_name}
debug ${do_scoring_debug}
optimized ${do_scoring}
general ${spinx}
general rt
general dl
general pthread
general cblas
general ${atlas}
)
Thank you in advance, Vyacheslav.
More information about the CMake
mailing list