【问题标题】:which cmake will Android plugin use?Android插件将使用哪个cmake?
【发布时间】:2019-02-10 17:30:15
【问题描述】:

在 Android Studio 3.3 中,我使用使用 CMake 构建的本机 (C++) 库。 Android 插件 (v. 3.2.1) 将根据 externalNativeBuild 的配置选择“内置”或“外部”cmake,如 developer.android.com 中所述。

我想添加一个额外的自定义任务(安装),它应该使用与 Android 插件相同的 cmake 版本。但即使使用“内置”cmake,也不清楚路径是什么。我可以找到android.sdkDirectory,但即便如此我今天也有sdk\cmake\3.6.4111459sdk\cmake\3.10.2.4988404,而且出于某种奇怪的原因,我的一些项目选择3.6,而其他项目使用3.10强>。这与官方发布的 Android Studio 发布说明相矛盾,即 “Gradle 仍默认使用 3.6.0 版本”,但好吧……

如何在不重新实现 Android 插件的晦涩逻辑的情况下决定使用哪个?

一个可能有帮助的解决方法,解析生成文件.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_command.txt的第一行:

Executable : C:\local\Android\sdk\cmake\3.10.2.4988404\bin\cmake.exe

这还是需要一些调整的,因为以后版本的构建工具会使用.cxx而不是.externalNativeBuild;构建变体名称也可能不同。

【问题讨论】:

  • @Michael,问题是我是否可以从 Android 插件获取此信息,而不是重新实现其晦涩的逻辑。
  • 好的。那么也许你应该删除 "How can I decision to use which to use, without reimplementing the Android Plugin's obscur logic?" 部分,因为这就是我要回复的内容。
  • 很抱歉,我最初解释得不够清楚。您和shizhen 都引用的逻辑问题在于document 没有解释他们如何在sdk\cmake\3.6.4111459sdk\cmake\3.10.2.4988404 之间进行选择。
  • “文档没有解释他们如何在 sdk\cmake\3.6.4111459 和 sdk\cmake\3.10.2.4988404 之间进行选择”。但他们确实这样做了:“未在 build.gradle 中设置特定 CMake 版本的项目是使用 CMake 3.6.0 构建的。要使用后面包含的版本,请在模块的 build.gradle 文件中指定 CMake 版本 3.10.2 "

标签: android-studio cmake android-ndk


【解决方案1】:

Android Studio 将在sdk\cmake 下获取最新的 CMake 版本,但您可以从

配置您的特定版本
externalNativeBuild {
    cmake {
        ...
        version "cmake-version"
    }
}

并在local.properties 中指定我们的自定义 CMake 导向器,如下所示

cmake.dir="path-to-cmake"

或者,您可以选择不从 SDK 管理器升级您的 CMake(只需删除 sdk\cmake\<version to delete> 文件夹即可),这样您就可以坚持使用您的项目熟悉的 CMake 版本.

【讨论】:

  • “将选择最新的 CMake 版本” — 在我的机器上,一个项目使用 3.6,另一个使用 3.10。
  • 我的问题是我是否可以从 Android 插件获取这些信息,而不是重新实现其晦涩的逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 2020-11-03
  • 2017-03-30
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多