使用Android NDK R10E在构建静态库中的“自动使用”的使用无效

技术标签: 安卓  C ++  C ++ 11  Android-NDK  cmake

我正在构建一些C ++项目,用于Android将其用于Unity插件。我成功地为iOS编译,但是我收到了Android的以下错误:

~/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_algo.h:3789:14: error: invalid use of 'auto'

~/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/future:114:11: error: declaration of 'class std::future<void>'
 class future;

我在用着 android-ndk-r10e 和这个 CMakeLists.txt 代码:

cmake_minimum_required(VERSION 2.8)
project(PluginAndroid)

# Android configuration
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 19) # API level
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
set(CMAKE ANDROID_STL_TYPE stlport_static)
set(CMAKE_ANDROID_TOOLCHAIN_NAME arm-linux-androideabi-4.8)
set(CMAKE_CXX_STANDARD 11)


include_directories ("${PROJECT_SOURCE_DIR}/3rdParty/common/")
....

file(GLOB source_files
    "*.h"
    "*.cpp"
)

add_library(PluginAndroid STATIC ${source_files})

有任何解决此问题的线索吗?

看答案

如评论中的指向 CMAKE_CXX_STANDARD 自CMAKE版本3.1以来可用(如果您使用的是Firefox,请参阅我的附加组件 这里 要查看自可用CMAKE功能以来的版本),因此您应该更改最少所需版本。

此外,您应该使用要求标记标准 cmake_cxx_standard_required.

最后,你应该使用 target_compile_features 确保您的编译器支持 auto 关键字(GCC 4.9不能为C ++ 11功能提供全部支持)。

这是您的CMAKE文件的修改版本:

cmake_minimum_required(VERSION 3.1)
project(PluginAndroid)

# Android configuration
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 19) # API level
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
set(CMAKE ANDROID_STL_TYPE stlport_static)
set(CMAKE_ANDROID_TOOLCHAIN_NAME arm-linux-androideabi-4.8)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include_directories ("${PROJECT_SOURCE_DIR}/3rdParty/common/")
....

file(GLOB source_files
    "*.h"
    "*.cpp"
)

add_library(PluginAndroid STATIC ${source_files})
target_compile_features(PluginAndroid PUBLIC cxx_auto_type)

无关,但请注意,使用 GLOB 不建议收集源文件 文档:

我们不建议使用Glob从源树收集源文件列表。如果在添加或删除源时没有cmakelists.txt文件更改,则生成的构建系统将无法知道何时要求Cmake重新生成。


智能推荐

安卓NDK 使用

为什么80%的码农都做不了架构师?>>>    环境搭建参考百度经验(未验证):   1.安卓项目中建好对应类,然后编译一下,在cmd窗口中cd到项目的bin\classes目录下,使用 javah –jni 全限类名 生成对应的头文件 2.在Eclipse中右键对应项目,Android Tool –>Add Nativ...

NDk在AndroidStudio中的使用

         为了提高项目的安全性,所以在编写安卓程序时时可以使用Ndk来提高APP的防护能力。下面就我写的Ndk来做一个简单总结记录,对于ndk小白还是有一定帮助的!          1.为Androidstudio配置Ndk,首先打开SDkManager,然后选中NDk选项,然后点击App...

Android studio中NDK开发(一)——使用CMake构建NDKDemo

一、前言 NDK可以支持使用C/C++来编写Android程序,不但可以引入C/C++中优秀的库资源,而且在使用底层的C/C++来处理一些复杂的运算效率更高,并且可以方便跨平台移植。本篇主要以CMake的方式来构建NDK,主要以最常规的方式创建一个NDKImportDemo,并对自动创建官方例子进行分析构建的过程以及CMakeLists.txt构建文件的配置。 二、准备 1、检查Android s...

Android NDK 的 Android.mk 使用姿势

Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。 Android.mk文件语法允许我们将Source打包成一个”modules&rd...

Android中NDK的so文件产生和使用

参考:http://blog.csdn.net/bingdianlanxin/article/details/46461899 使用工具:eclipse 1.生成so文件 1.1.打开Eclipse,新建一个Android工程 FileàNewàAndroid Application Project 一路Next下去,直到Finish。    1.2...

猜你喜欢

详细的NDK使用教程

     由于忙于公司项目,许久未写博客,而且项目中许久未用到ndk,最近项目要用上,于是今天就重温下ndk的使用教程,加深印象,也给一些未接触过ndk的同学提供涓埃之力。网上的ndk资料也是有很多,但有些还是不全或者有些问题的,其实还是需要自己亲自动手摸索,踩踩雷,总结经验。  1.先要去下载好NDK,有很多版本,现在最新的版本好像是r16了,用老点的版本...

Eclipse的ndk初步使用

1. 新建一个Android project 名为JNI   2. 编写jni文件 JNI(Java Native Interface)就是连接Java与Native的接口,主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点.Native程序就是非java...

VS2010+Qt4.8.6+Visual Assist X安装步骤

工欲善其事,必先利其器! 下面就让我来给大家简单的介绍一下,Qt在VS2010上面开发的环境部署大杀器吧,还有Visual Assist X自动补全助手哦...... 一.安装VS2010 VS2010全称“Microsoft Visual Studio 2010”,是微软公司推出的开发环境。也是目前流行的Windows平台应用程序开发环境。   1. 在安装之前...

山东大学数据库课程设计火车票系统报告

数据库课程设计报告 ​ ————火车票订票系统 ​         ​​ 学院:            专业:           ...

没有显示器且IP未知的情况下登录树莓派

    如果是没有显示器操作树莓派,可能会不知道树莓派有线网卡自动分配到的IP地址,不知道登录到哪儿。以下提供详细操作步骤解决这个问题。 网段扫描法     这个是推荐的办法。网段扫描工具很多,推荐一个Advanced IP Scanner,下载地址:ipscan22.exe。 虽然是小工具但需要安装。忍耐一下吧。 软件会自动检测电脑所在的网段,自动决定扫描...

问答精选

getActionBar() returns NULL in actionBar

I am currently creating the actionBar in android studio and I have created action buttons and my aim is to have a dropdown menu everytime I click a button. In my menu_main.xml, I added the items searc...

Swift: Dynamic UIView that pushes UIViews below it after a resize

What I am trying to is emulate the effect of the Jquery .slideDown() effect in Swift for an iOS app. -I need a UIView to auto-resize based on the length of the text in it. -The UIView needs to push ot...

Illeagal character in HTTPPost Method Android

AM getting continuously the illegal character error in this url : Previously there was an extra & symbol , so I removed but still am getting same error. Can anyone help me, in finding this illegal...

Working with a Firestore Kotlin RecyclerView, I am trying to show a custom object which is a field of the class being displayed in the recycler view

I have a Firestore database holding my data. Here is the structure (database structure) subclass database structure So my booking is sub-collections of the user. Each booking contains its own restaura...

MongoDB setIntesection on array of arrays

I'm pretty new to Mongo DB, and I'm having a bit of trouble getting the aggregate intersection working. Let's say I only have the following document in a collection: and I would like to return I'm doi...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答