cmake中添加引用动态链接和静态链接库
ADD_EXECUTABLE(a.out ./main.cpp)
TARGET_LINK_LIBRARIES(a.out /usr/lib/libeg.so)
动态库的添加:
link_directories(${PROJECT_SOURCE_DIR}/lib) #添加动态连接库的路径
target_link_libraries(project_name -lmxnet ) #添加libmxnet.so
静态库的添加:
add_library(mxnet STATIC IMPORTED)
set_property(TARGET mxnet PROPERTY IMPORTED_LOCATION /path/to/libmxnet.a)
target_link_libraries(project_name mxnet ) #添加libmxnet.a
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project(useHello)
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
# VAR变量代表找到的库全路径,包含库文件名
#FIND_LIBRARY(libhello_shared /home/ubuntu/ch2/useHello)#bug
include_directories (${useHello_SOURCE_DIR})
MESSAGE(${useHello_SOURCE_DIR})#${PROJECT_SOURCE_DIR}
#增加src为link目录w-1
# link_directories(${PROJECT_SOURCE_DIR})#${PROJECT_SOURCE_DIR}
# MESSAGE(${PROJECT_SOURCE_DIR})
#增加src为link目录w-2
# link_directories("/home/ubuntu/ch2/useHello")
link_directories(/home/ubuntu/ch2/useHello)# "/"=/ 引号 可有可无
# 添加一个可执行程序
add_executable(useHello useHello.cpp )
# 将库文件链接到可执行程序上
# target_link_libraries( useHello hello)
# target_link_libraries( useHello hello_shared )# w-1
target_link_libraries( useHello -lhello)#hello_shared=lhello # w-2
#增加src为link目录 link_directories
# 将库文件链接到可执行程序上 target_link_libraries
#增加src为link目录w-1
link_directories(${PROJECT_SOURCE_DIR})#${PROJECT_SOURCE_DIR}
# MESSAGE(${PROJECT_SOURCE_DIR})
#增加src为link目录w-2
# link_directories("/home/ubuntu/ch2/useHello")
link_directories(/home/ubuntu/ch2/useHello)# "/"=/ 引号 可有可无
# 添加一个可执行程序
add_executable(useHello useHello.cpp )
# 将库文件链接到可执行程序上
# target_link_libraries( useHello hello)
target_link_libraries( useHello hello_shared )# w-1
# target_link_libraries( useHello -lhello)#hello_shared=lhello # w-2
target_link_libraries与link_libraries 区别
target_link_libraries(useHello /home/ubuntu/ch2/useHello/libhello_shared.so)
# target_link_libraries(useHello "/home/ubuntu/ch2/useHello/libhello_shared.so")
# link_libraries(useHello "/home/ubuntu/ch2/useHello/libhello_shared.so")#bug
# link_libraries(useHello /home/ubuntu/ch2/useHello/libhello_shared.so)#bug #undefined reference to `printHello()
路径错误
target_link_libraries 全路径,绝对路径
路径错误提示bug(路径拼写错误) “” "" ‘’英文双引号 或不加引号
#bug #undefined reference to `printHello()
#bug #/usr/bin/ld: cannot find -l“home/ubuntu/ch2/usehello/libhello_shared.so”
In function `main':useHello.cpp:6: undefined reference to `printHello()'
LINK_LIBRARIES (添加需要链接的库文件路径,注意这里是全路径)
List of direct link dependencies.
比如:
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")
也可以写成:
LINK_LIBRARIES("/opt/MATLAB/R