如何将Conan构建的可编辑第三方库加入CMake生成的VS解决方案?
解决Conan可编辑包rttr加入CMake生成VS解决方案的问题
一、修正Conan可编辑包的配置流程
你的Conan命令需要调整,确保可编辑包正确关联到项目:
- 先在rttr源码根目录执行可编辑包添加:
conan editable add . rttr/0.9.6.15.1@user/thirdparty
- 回到你的项目根目录,执行Conan安装并强制构建可编辑包:
cd path/to/your/project conan install . --build=rttr
注:
--build=rttr会强制从本地源码构建rttr,确保后续的代码修改能被同步到构建流程。
二、在CMake中正确引入rttr(替代include_external_msproject)
include_external_msproject不适合配合Conan可编辑包使用,Conan会自动为可编辑包生成CMake导入目标,正确做法如下:
- 在项目根
CMakeLists.txt开头,引入Conan生成的工具链文件:
include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
- 通过
find_package定位rttr,并将其链接到你的项目目标:
find_package(rttr REQUIRED) # 假设你的项目目标名为my_project target_link_libraries(my_project PRIVATE rttr::rttr_core)
三、让VS解决方案关联rttr源码并同步修改
完成上述配置后,重新生成VS解决方案:
- 执行CMake生成命令(以VS 2022为例):
cmake -S . -B build -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake
- 打开生成的
.sln文件,rttr的项目会自动出现在解决方案中。此时在VS里修改rttr的源码,重新构建项目时,rttr会自动重新编译,变更会同步到你的主项目。
四、常见问题排查
- 确认rttr的
conanfile.py中配置了CMakeDeps和CMakeToolchain生成器,确保能正确生成CMake导入目标。 - 检查Conan安装日志,确认rttr是以可编辑包的形式被构建和导入的。
- 不要手动指定外部项目路径,Conan会自动处理可编辑包的路径关联逻辑。
内容的提问来源于stack exchange,提问作者DuckPunk
相关产品推荐
相关产品推荐

