Android CMake工具链错误?

时间:2017-03-03 10:51:37

标签: android c++11 cmake

我正在尝试使用CMake编译我的Android应用程序的原生部分。

在我的CMakeLists.txt文件中,我有这个声明:

append(CMAKE_CXX_FLAGS "-std=c++11")

append是我自己的函数,定义如下:

function(append VAR)
  set(${VAR} ${${VAR}} ${ARGN} PARENT_SCOPE)
endfunction()

当我为其他平台编译应用程序时,这很好用,但是当我将android.toolchain.cmake添加到混合中时,这一行产生:

... -fno-exceptions -fno-rtti ;-std=c++11 ...

这是;由于某种原因在标志之前添加。这将bash命令(对编译器的调用)分成两部分,其中第一部分不完整,第二部分没有意义。

如何告诉Android使用c ++ 11标准?

1 个答案:

答案 0 :(得分:2)

您的append()功能用于附加到列表。 (CMake命令list(APPEND)也是如此)。在列表元素中用分号分隔。

但是 CMAKE_CXX_FLAGS 不是列表:它是一个空格分隔的元素的字符串。这就是append()函数不适用于该变量的原因。

您的代码适用于 CMAKE_CXX_FLAGS 的原始值为空的情况,因此不使用单独的字符。