cmake引入库
故事是这样的,我之前写了个项目是用xcode写的c++项目。
现在想把他放在Clion编译器中编译。
所以这里涉及到了库的引入问题。CLion是使用cmake编译的。
我的项目中使用了protobuf和hiredis这两个库。
分别安装在/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)
- 参考demo:github.com/IcyHeartBX/…