Android Studio中“在命名空间“ std”中没有名为“ variant”的模板”

时间:2020-06-11 03:10:40

标签: c++ android-studio cmake c++17

这很奇怪,因为它在我拥有的另一个项目中确实能够识别它。 这是CMakeLists.txt fo;对于出现错误的项目:

cmake_minimum_required(VERSION 3.4.1)

# Require C++17 compiler with no extensions
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

(...)

它可以识别std::variant的那个几乎是相同的(实际上是我复制的):

cmake_minimum_required(VERSION 3.4.1)

# Require C++17 compiler with no extensions
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

link_directories(${CMAKE_CURRENT_LIST_DIR}/..)

(...)

我的Android Studio中已安装CMake的版本为3.6.4111459和3.10.2。 我也包括了<variant>,它没有问题,但仍然不认识std::variant。 该项目已构建,但Android Studio仍以红色突出显示。

1 个答案:

答案 0 :(得分:-1)

问题是我没有指定Gradle我想要使用的CMake版本。较旧版本的CMake不支持std::variant。所以我去了build.gradle并这样做了:

(...)

android {
    compileSdkVersion 28

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    defaultConfig {
        minSdkVersion 16
    }
    lintOptions {
        disable 'InvalidPackage'
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
            version "3.10.2"        // I ADDED THIS
        }
    }

(...)