最近了解到使用conan对c++项目进行包管理可以大大节省人工处理依赖关系的时间。所以决定尝试在qt creator中创建的qt项目中使用conan进行包管理,但是在使用时发现了qt creator中的conan插件在实际使用中并不能完美的自动识别并安装conanfile.txt中指定的包。并且通过参考官方文档和官方论坛的帖子[1][2]这些介绍使用qt creator中使用package manager auto-setup的方法均不能完美的自动完成conan第三方包的依赖安装。而在CSDN搜索到的一些介绍详细步骤的文章又需要订阅才能查看,因此在这里分享一下我的方法,供大家参考。
测试环境
qt creator 版本:16.0.0 From revision 55ce4e9c06
cmake 版本:3.30.5 (Qt creator自带)
conan 版本:2.15
构建步骤(以空白qt widget项目添加spdlog依赖为例)
按照正常流程创建cmake构建的qt widget项目
在项目目录中添加conanfile.txt,内容如下(直接复制conan center中给出的snippet即可)
1 | [requires] |
- 在项目的目录打开powershell(或者cmd),执行如下命令:
1 | conan.exe install . -s "build_type=Debug" "--build=missing" |
此时conan会把创建的文件放在<项目目录>/build/generators路径下。
- 在qt creator的Projects->Build&Run->Build->Current Configuration添加CMAKE_PREFIX_PATH并指定生成的文件目录,如果已经又CMAKE_PREFIX_PATH则在后面添加刚才的generators目录即可
- 在项目的CMakeLists.txt文件中添加一下内容(同样可以参考conan center中给出的snippet)
1 | # ... |
在项目执行Cmake后即可在项目中正常使用刚才添加的包。如果出现如下提示直接应用即可
目前存在的一点问题
通过该方式虽然能够正确添加并且管理第三方包,但是在第6步的地方会提示如下错误,可以直接忽略即可(虽然不美观,但是确实不影响使用)。
同时在构建项目是会有如下提示,同样选择忽略错误即可。
后记
使用这样的方式成功在qt creator中使用了conan进行第三方包的管理和使用。但是仍然不是很完美(会有两个错误提示),后续还需要进一步深入研究,争取0错误提示。