假设我有两个项目:库和应用程序。应用程序在conanfile.txt
中有库。通常当执行应用程序的依赖项conan install
时,会下载库并将其编译为~/.conan/data/
。是否可以将应用程序链接到当前正在工作的库(例如/home/path/to/code/Lib/cmake-build-release/lib/
)?
我之所以要这么做是为了调试一个Lib的bug,这个bug唯一已知的重现方法是使用App。我希望能够快速地将std::cout
添加到某些地方,然后增量地重新编译。重新构建整个conan包,每次都执行conan install
太长了。我在考虑一些可以改变include路径和链接路径的hack。
1条答案
按热度按时间olhwl3o21#
是的,这是可能的,Conan使用了与Python
pip
相同的方法:“可编辑的”软件包。你可以在文档的这一节中阅读更多关于它的信息:Editable packages。基本思想是:cd libfolder
并在edition中将其定义为一个包:conan editable add lib/1.0
lib
,例如conan install .
+cmake ..
或conan build .
cd appfolder
并执行conan install .
,你会看到lib/1.0
被标记为“可编辑”,而不是来自Conan缓存,你可以构建App
,它会将你的依赖项从本地libfolder
链接到lib
。libfolder
所做的每一个更改以及在那里进行的本地构建(增量构建),都将直接用于App
,而无需将create
或export-pkg
放到Conan缓存中。可编辑特性依赖于
layout()
方法中项目布局的lib/1.0
中的正确定义。如果不同的包lib和app生成了兼容的项目(如Visual Studio),则可以在IDE中加入这些项目,从而方便地同时开发和调试这两个包。