0%

cmake+idea+conan构建c++开发环境

cmake+idea+conan构建c++开发环境

  • conan是一个还算能用的c++包管理器, 用它可以简化很多依赖关系
    • conan 本身使用python写的, 所以…
    • 推荐python3 pip3 以上进行安装
    • pip3 install conan
  • 这里假设你已经安装好了conan
    • $conan -v
      Conan version 1.24.1
      
      1
      2
      ## 定义conan依赖文件```conanfile.txt```
      - 在项目根目录下定义一个名为```conanfile.txt```的文件,eg:

[requires]
zlib/1.2.11@conan/stable
boost/1.71.0@conan/stable
gtest/1.8.1@bincrafters/stable
protobuf/3.9.1@bincrafters/stable
opencv/4.1.1@conan/stable

[generators]
cmake

[options]

1
- 在项目cmake中使用conan: 在cmake合适的位置加载conan

加载conan

set(CONAN_LIBS “”)
execute_process(
COMMAND conan install ..
)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
message(“conan get libs\t${CONAN_LIBS}\n”)

1
2
- cmake reload之后,所有你指定的依赖就会下载到本地了
- 需要的链接目标链接就行(单个或者全部都可以)

target_link_libraries(${build_temp} pthread ${CONAN_LIBS})

1
2
3
4
5
6
7
8
9
## 配合clion进行远程开发
## 我的编译机是一台linux云服务器, 平时使用win/mac开发
- 使用clion进行远程开发这里就不说了, 网上很多
- 说明下conan头文件的同步吧:
- 我使用的clion版本无法下载conan动态依赖的头文件到本地,虽然编译没问题, 但是代码提示就很难看
- 原因是头文件被下载下来时,包含了conan的路径,idea没有识别(Mac上没有识别,windows上识别了...)
- 暴力解决:重新下载一份头文件添加进去
- 找到conan编译的临时位置:eg;```~/.conan/data/boost/1.71.0/conan/stable```
- 这个目录下package目录就是最终生成的包,
ll package/9434a65ef948ba36ef81ae1ae01f4667d80ff307/
总用量 1152
-rw-r--r-- 1 root root    3077 1月  13 16:56 conaninfo.txt
-rw-r--r-- 1 root root 1166067 1月  13 16:56 conanmanifest.txt
drwxr-xr-x 3 root root    4096 1月  13 16:56 include
drwxr-xr-x 2 root root    4096 1月  13 16:56 lib
1
2
- 中间多了一层hash值, 不要在意, 我们最终需要```~/.conan/data```下所有的include文件
- 写个命令,在~/.conan/data下执行
mkdir temp_include & find . -name include -type d |grep package|xargs -I{} cp -vr {} temp_include/ ``` - 下载下来放在clion自己同步的远程头文件中, 解决了 ``` C:\Users\用户名\.CLion版本号\system\.remote\服务器IP和端口\hash 值\usr\include ```