android - 在多种产品风格之间拆分 C++ 文件
问题描述
我的 Android Studio 模块有两种产品风格:
flavor1 使用 NDK 并包含 cpp 文件,而 flavor2 不使用 NDK 并且不应包含 cpp 文件。(当某些cpp
文件仅与 一起使用时会发生同样的问题flavour1
,而其他cpp
文件特定于flavour2
)。
我将所有 cpp 文件都放入其中,flavour1/cpp
并希望它能够完成这项工作。但是,适用于 Java 的方法似乎不适用于cpp
,因为它cmake
总是接受位于 , 指定的目录中的文件CMAKE_HOME_DIRECTORY
,即main/cpp
,仅此而已!任何其他cpp
文件位置都会产生错误消息:
Failed to activate protocol version: "CMAKE_HOME_DIRECTORY" is set but incompatible with configured source directory value
.
我能想到的唯一解决方法是为每种产品风格设置不同的库。有更自然的方法吗?
解决方案
我认为您不能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.
我还没有测试过,但它应该可以工作。
推荐阅读
- dart - 如何在 Flutter 中定义离散动画?
- jquery - webui弹出窗口不关闭
- asp.net-mvc - 如何在.net core中使用redis缓存页面?
- c++ - 在 C++ 中减去 ASCII 字符/值
- machine-learning - 如何在随机森林模型训练中最好地使用邮政编码?
- angular - “可观察”类型上不存在属性“catchError”
' - json - 使用 Swagger-UI 启用 Json 编辑器
- javascript - 盖茨比图像之间的淡入淡出
- java - 使用 TestNG 为集成测试捕获和断言 Log4j 输出
- swift - 如何在uiscrollview中的按钮之间添加空格