conanfile.py中定义的package_info()
方法用于向package的调用者(conumer)提供包库名,编译/连接选项,文件夹等等信息,有了这些信息构建工具的generator就可以根据它们生成对应的文件,用于调用者引用package.
比如基于cmake的CMakeDeps可以根据这些信息自动生成Find<Package>.cmake
和<Package>-config.cmake
.
调用者的CMakeLists.txt中通过FindPackage(<Package>)
就可以自动找到package.创建对应的import target.
比如我为mnn 项目写的conanfile.py(https://gitee.com/l0km/mnn/blob/conan1.2.7/conanfile.py)
mnn这个项目本身没有生成cmake配置文件,但conan会在调用方在引用mnn package时CMakeDeps generator会自动生成mnn-config.cmake及相关文件,如下图,这样就减少了package开发中编译脚本的工作量。
但是有的时候,package本身的CMake编译脚本中已经有了config-cmake生成的逻辑,可以自己生成config-cmake.我们可以通过在package_info()
进行配置,让conan使用package自带的config.cmake.而不需要CMakeDeps
生成cmake配置文件。
如下在package_info
中定义builddirs
和cmake_find_mode
参数就可以实现
参见 《Disable CMakeDeps For Installed CMake configuration files》