这很奇怪,因为它在我拥有的另一个项目中确实能够识别它。
这是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仍以红色突出显示。
答案 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
}
}
(...)