在多种产品风格之间拆分c ++文件

时间:2019-10-10 05:17:50

标签: android android-studio android-ndk android-productflavors

我的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

我能想到的唯一解决方法是为每种产品口味提供不同的库。有没有更自然的方法?

1 个答案:

答案 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.

我还没有测试过,但是应该可以。