public:it:cplusplus:conan

这是本文档旧的修订版!


Conan

  • 官方文档参考这个链接 https://docs.conan.io/en/latest/integrations/cross_platform/android.html, 而不是这个链接https://docs.conan.io/en/latest/systems_cross_building/cross_building.html, 后者的示例在 armv8 会错误编译成 armv7。
  • 可直接使用官方这个链接的第一种办法,即在 profile 里直接使用 android-ndk包作为 tool_requires, 比如编译 armv8:
    include(default)
    [settings]
    arch=armv8
    build_type=Release
    compiler=clang
    compiler.libcxx=libc++
    compiler.version=11
    os=Android
    os.api_level=21
    [tool_requires]
    android-ndk/r22b
    [options]
    [env]

    然后install 或 create 时指定跨平台编译

    conan install .. --build=missing -pr:h android-armv8 -pr:b default
  • 这个链接里android 示例 错误的原因是, Android 与 CMake 结合时, CMake 除了指定 android.toolchain.cmake, 还需要额外指定变量 ANDROID_ABI ANDROID_PLATFORM 才能正确编译出目标版本。 而 conan 并没有办法再 profile 里设置这两个cmake变量, 所以就算你的工程的 CMakefile.txt 设置了这两变量,你的依赖包在cmake building 时也会默认选择了错误的arch。
  • public/it/cplusplus/conan.1648169562.txt.gz
  • 最后更改: 2022/03/25 08:52
  • oakfire