我的Android Studio模块具有两种产品特色:
flavor1使用NDK并包含cpp文件,而
flavour2不使用NDK,也不应该包含cpp文件。(当某些cpp
文件仅与flavour1
一起使用时,其他cpp
文件则专门针对{{1} }。
我将所有cpp文件都放在了flavour2
中,并希望它能完成这项工作。但是,适用于Java的内容似乎不适用于flavour1/cpp
,因为cpp
始终接受位于cmake
指定的目录中的文件,即CMAKE_HOME_DIRECTORY
,而没有其他内容!任何其他main/cpp
文件位置都会产生错误消息:
cpp
。
我能想到的唯一解决方法是为每种产品口味提供不同的库。有没有更自然的方法?
答案 0 :(得分:0)
我认为您无法完全根据构建风格禁用externalNativeBuild
。您可以做的就是根据构建风格将参数传递给CMake,而只是不以您希望从中排除本地库的风格构建任何库:
flavor1 {
externalNativeBuild {
cmake {
arguments "-DENABLE_NATIVE_LIBS=TRUE"
}
}
}
flavor2 {
externalNativeBuild {
cmake {
arguments "-DENABLE_NATIVE_LIBS=FALSE"
}
}
}
然后在您的CMakeLists.txt中:
cmake_minimum_required(VERSION whatever you support)
if (NOT ENABLE_NATIVE_LIBS)
return()
endif()
# Rest of your CMakeLists.txt here.
我还没有测试过,但是应该可以。