在多个产品风格之间拆分 C++ 文件
Splitting c++ files between multiple product flavours
我的 Android Studio 模块有两种产品风格:
flavour1 使用 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.
我还没有测试过,但应该可以。
我的 Android Studio 模块有两种产品风格:
flavour1 使用 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.
我还没有测试过,但应该可以。