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

自杀

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

我的分析和结果如下。

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

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

当工具链文件或命令行选项将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

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

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

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

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

任何有关过程或如何做到这一点的意见,将不胜感激。

迪帕克

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

由于您的编译器不随NDK一起提供,因此也许您可以考虑使用独立的工具链模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向CMake中的自定义编译器/语言添加额外的编译步骤

如何在Android项目上设置自定义Java编译器参数?

如何将CMAKE用于自定义编译器和自定义操作系统?

如何在Unity中使自定义检查器添加对象引用

添加对 c++ 2011 的编译器支持

如何在旧版编译器中为自定义语言创建自己的旧版语言模板?

如何在cmake工具链文件中设置编译功能以使已知的自定义编译器使用target_compile_features

如何在CMake中添加“ -l”(ell)编译器标志

如何使用自定义编译器和自定义标志构建Qt?

如何在Android中添加自定义通知声音

如何在Android中添加自定义mime类型?

如何在cmake中自动查找编译器路径?

如何在Android中自定义微调器?

C ++为错误使用自定义打印/日志功能添加了编译器警告

将自定义元素和属性添加到编译器架构

在不自定义编译器的情况下向Python添加新语句

如何在 Lazarus IDE 中定义编译器符号?

如何在monodevelop中添加ac / c ++编译器?

如何使用.map添加对象的自定义属性

如何在 VS Code 中添加自定义编译命令?

如何为OpenSSL提供自定义的编译器/链接器标志?

如何使用wix在MSI安装程序的欢迎消息中添加对齐的自定义消息

GoogleSignIn / Crashlytics / Firebase的自定义编译器标志

自定义Java编译器(扩展名)

如何在引导日期选择器中添加自定义文本添加

如何在我的 android 应用程序中添加对 android 4.4 的支持

如何在自定义 UI 编辑器自定义选项卡中添加 Powerpoint 的内置工具

如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

如何在Angular中为自定义验证器添加自定义验证错误消息