我一直在为我从事的项目之一使用的所有库创建带有柯南的软件包。我为每一个都创建了一个 conanfile.py,一切都很好。我为虚拟代码创建了一个 conanfile.txt,以确保一切都按预期工作。我跑了
柯南安装 .. --build=missing
这已经编译了所有的包。我可以在我的 CMake 文件中使用 ${CONAN_INCLUDE_DIRS} 和 ${CONAN_LIBS}。但是,我希望将柯南作为一种可选的做事方式,使用 Find_package(...) 作为获取库位置、链接和包含详细信息的一种方式。
所以我很想看到
柯南 0.6 新内容!现在柯南为 CMake find_package 提供了自动支持,而无需为每个包创建自定义 FindXXX.cmake 文件(柯南 0.5)。
所以我认为它应该工作。但是没有生成 FindXXX.cmake 文件。
这是我的一个 conanfile.py 作为 OpenMPI 的示例:
from conans import ConanFile
import os
from conans.tools import download
from conans.tools import unzip
from conans import CMake
from conans import ConfigureEnvironment
class OpenMPIConan(ConanFile):
name = "OpenMPI"
version = "2.0.0"
generators = "cmake"
settings = "os", "arch", "compiler", "build_type"
url="https://www.open-mpi.org/software/ompi/v2.0/"
license="https://www.open-mpi.org/community/license.php"
source_url = "https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.0.tar.bz2"
unzipped_path = "openmpi-2.0.0/"
def source(self):
self.zip_name = os.path.basename(self.source_url)
download(self.source_url, self.zip_name)
unzip(self.zip_name)
os.unlink(self.zip_name)
def build(self):
self.run("%s/%s/configure --enable-mpi-thread-multiple --enable-mpi-cxx --prefix=%s CC=clang CXX=clang++" % (self.conanfile_directory, self.unzipped_path, self.package_folder))
self.run("%s make -j 8 install" % env.command_line)
def package(self):
self.copy("*.h", dst="include", src="install/include")
self.copy("*.lib", dst="lib", src="install/lib")
self.copy("*.a", dst="lib", src="install/lib")
def package_info(self):
self.cpp_info.libs = ["mpi", "mpi_cxx"]
为什么没有创建 FineOpenMPI.cmake 文件?我怎样才能确保它被创建?
PS:如果我理解正确的话,不需要打包方法。