gpt4 book ai didi

android - 如何在 cmake 中添加对自定义 android 编译器的支持?

转载 作者:行者123 更新时间:2023-11-29 01:05:27 26 4
gpt4 key购买 nike

我正在使用定制的 Android 编译器。编译 cpp 代码并生成 .so 文件。在命令提示符下它工作正常,但是当我尝试使用 Cmake 构建时,即使在工具链文件中设置了编译器名称之后,Cmake 总是选择枯萎的 Clang 或 GNU 编译器进行 Android 编译。

我的分析和发现如下。

我正在努力为 ANDROID 编译器创建一个工具链文件

我了解 CMAKE 中的流程,当在 Android 中指定 CMAKE_SYSTEM_NAME 时,与将 CMAKE_SYSTEM_NAME 指定为 IOS 或 LINUX 相比是不同的

当工具链文件或命令行选项将 CMAKE_SYSTEM_NAME 设置为“Android”时,请验证我当前的理解

CMakeDetermineSystem.cmake 加载此文件:Android-Determine.cmake接下来是特定于平台的初始化步骤:CMakeSystemSpecificInitialize.cmake 加载 Android-Initialize.cmake 以选择 sysroot。当在新的构建树中首次启用每种语言时,也会针对每种语言运行“确定”步骤:

Android-Determine-C.cmake
Android-Determine-CXX.cmake

语言文件在这里:

Determine-Compiler.cmake
Determine-Compiler-NDK.cmake

后一个文件是我们解析来自 NDK 的一堆信息的地方。结果保留在 CMakeFiles/$v/CMake${lang}Compiler.cmake 中以供将来运行。

接下来是语言特定的初始化步骤。例如——如果 {lang} 是 C:CMakeCInformation.cmake

加载其中之一:

Android-GNU-C.cmake
Android-Clang-C.cmake

加载其中之一:

Android-GNU.cmake
Android-Clang.cmake

Determine-Compiler-NDK.cmake 是 cmake 查找 clang 或 gcc 或 llvm 工具链版本并设置适当编译器的地方。

我们的需求和问题陈述当我尝试从工具链文件手动设置 c 和 cxx 编译器时,cmake 不允许我指向我的自定义编译器。理想情况下,我希望我的工具链文件告诉 cmake 要包含/链接的库和要使用的编译器。但是一旦系统被确定为 android,cmake 就会经历上述事件序列,并期望为 clang、gcc 或 llvm 编译器指定工具链。

我相信我可能需要对以下文件进行更改以适应 cmake 以使用自定义编译器。Determine-Compiler-NDK.cmake - 我们需要添加对包含 android 库和编译器的“NewCompiler 工具链”的支持。

新的 Android-{NewCompiler}-C.cmake、Android-{NewCompiler}-CXX.cmake、Android-{NewCompiler}.cmake 和另一个适当的工具链文件,用于设置目标架构和编译器标志。

如果您对流程或如何处理此问题提出任何意见,我们将不胜感激。

最佳答案

工具链文件可以设置主机上编译器的路径,但是目标平台范围的信息,如库集和包括要使用的目录通常属于平台信息模块(例如 Platform/Android-... 等)。

由于您的编译器未附带 NDK,也许您可​​以查看使用独立工具链模式。

关于android - 如何在 cmake 中添加对自定义 android 编译器的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47588748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com