请问cmake在配置文件中使用动态链接库和静态链接库?
那静态链接呢?
回复一样的,.so改成.a
回复那LINK_LIBRARIES是做什么用的?另外有没有好的中文学习资料
回复TARGET_LINK_LIBRARIES 表示link库,中文文档都比较乱,可以去官网看看,最好找个使用cmake的实际项目看看,很简单的。
回复例如我的一些项目:https://git.oschina.net/andyspider,C++的基本上都是用的cmake。
如果想灵活一点,不把库的路径写死,那就类似这样(libeg.so):
FIND_PACKAGE(eg REQUIRED)IF (EG_FOUND) INCLUDE_DIRECTORIES(${EG_INCLUDE_DIRS}) SET(DEPLIBS ${DEPLIBS} ${EG_LIBRARIES})ENDIF ()
# 下面可以有好多个FIND_PACKAGE(...)
ADD_EXECUTABLE(a.out ./main.cpp)TARGET_LINK_LIBRARIES(a.out ${DEPLIBS})
当然这是需要FindXXX.cmake文件支持的,cmake自带了一些(cmake --help-module-list),没有的话需要自己写。
ADD_EXECUTABLE(a.out ./main.cpp)TARGET_LINK_LIBRARIES(a.out /usr/lib/libeg.so)
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(7)
那静态链接呢?
回复
一样的,.so改成.a
回复
那LINK_LIBRARIES是做什么用的?另外有没有好的中文学习资料
回复
TARGET_LINK_LIBRARIES 表示link库,中文文档都比较乱,可以去官网看看,最好找个使用cmake的实际项目看看,很简单的。
回复
例如我的一些项目:https://git.oschina.net/andyspider,C++的基本上都是用的cmake。
如果想灵活一点,不把库的路径写死,那就类似这样(libeg.so):
FIND_PACKAGE(eg REQUIRED)
IF (EG_FOUND)
INCLUDE_DIRECTORIES(${EG_INCLUDE_DIRS})
SET(DEPLIBS ${DEPLIBS} ${EG_LIBRARIES})
ENDIF ()
# 下面可以有好多个FIND_PACKAGE(...)
ADD_EXECUTABLE(a.out ./main.cpp)
TARGET_LINK_LIBRARIES(a.out ${DEPLIBS})
当然这是需要FindXXX.cmake文件支持的,cmake自带了一些(cmake --help-module-list),没有的话需要自己写。
ADD_EXECUTABLE(a.out ./main.cpp)
TARGET_LINK_LIBRARIES(a.out /usr/lib/libeg.so)