cmake引入库

1,862 阅读1分钟
原文链接: tangsanzang.tk

cmake引入库

故事是这样的,我之前写了个项目是用xcode写的c++项目。

现在想把他放在Clion编译器中编译。

所以这里涉及到了库的引入问题。CLion是使用cmake编译的。

我的项目中使用了protobufhiredis这两个库。

分别安装在/usr/local/hiredis/usr/local/protobuf中。

CMakeLists.txt中追加如下内容:

  • 头文件搜索目录

    include_directories(/usr/local/hiredis/)
    include_directories(/usr/local/protobuf/include)
    
  • 链接库搜索目录

    link_directories(/usr/local/hiredis/)
    link_directories(/usr/local/protobuf/lib/)
    
  • 引入库

    target_link_libraries(cmake_link_lib /usr/local/hiredis/libhiredis.a)
    target_link_libraries(cmake_link_lib /usr/local/protobuf/lib/libprotobuf.dylib)
    

可以发现引入库时,写的是全路径,按说加了库搜索路径,就不用写全称了,但是我写库名称实验是不成功的。不知道什么原因。

另外,其实下面写的全路径,就无需加库搜索目录了,这个倒是可以省略的。

还有一个重点就是下面加入的内容,最好写在add_executable之后,不然可能报错。

我示例的CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(cmake_link_lib)

set(CMAKE_CXX_STANDARD 11)

add_executable(cmake_link_lib main.cpp)

include_directories(/usr/local/hiredis/)
include_directories(/usr/local/protobuf/include)
link_directories(/usr/local/hiredis/)
link_directories(/usr/local/protobuf/lib/)

target_link_libraries(cmake_link_lib /usr/local/hiredis/libhiredis.a)
target_link_libraries(cmake_link_lib /usr/local/protobuf/lib/libprotobuf.dylib)

参考:

blog.csdn.net/yushulx/art…

www.jianshu.com/p/33126d6ba…

bbs.csdn.net/topics/3919…