目前c++包管理工具主要有三个:xcmake,conan,vcpkg,经过调研尝试决定使用conan来进行c++代码在不同平台的编译工作。
1.conan的主要工作流程
1.1 编写配置文件conanfile.py
from conan import ConanFile
class CompressorRecipe(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeToolchain", "CMakeDeps"
options = {"shared":[True, False]}
default_options = {"shared": False}#设置编译为静态库还是动态库
def requirements(self):
self.requires("pcl/1.13.1")
self.requires("sophus/1.22.10")
self.requires("laszip/3.4.3")
self.requires("onetbb/2021.10.0")
self.requires("opencv/4.8.1")
self.requires("yaml-cpp/0.8.0")
self.requires("ceres-solver/2.2.0")
self.requires("libpcap/1.10.4")
def build_requirements(self):
self.tool_requires("cmake/3.22.6")
1.2 在本机编译需要的第三方库
conan install . --output-folder=conanoutput --build=missing
1.3 输出成果及如何使用
编译好的第三方库在本地统一管理
只需要将输出路径传给cmake,结合cmake命令,可以自动找到本地的第三方库路径并设置依赖。
重点:conan的工作流程1,2,3是跨平台的(Linux,windows, mac, ios)