gpt4 book ai didi

android - 使用 Gradle 和 CMake 将发布和调试子目录添加到 Android 构建中

转载 作者:太空狗 更新时间:2023-10-29 14:43:42 25 4
gpt4 key购买 nike

我正在尝试将 Android NDK 项目从 Ant/ndk-build 迁移到 Gradle/CMake。我想在 Windows 上从命令行构建它。我不想使用 Android Studio。它现在几乎可以正常运行,但还有一件事需要解决,那就是:

在我的 CMakeFiles.txt我正在将其他几个包含静态链接器库的目录导入到我的项目中,如下所示:

add_subdirectory("../foobar/src" "../foobar/obj/${ANDROID_ABI}")

现在的问题是指定二进制文件的目录。我已经在使用 ${ANDROID_ABI}确保目标文件和库文件按体系结构分开。然而,这还不够,因为 Gradle 还将进行调试和发布构建,并且使用上面的行,调试和发布对象和库文件将被写入完全相同的目录,这将使 Gradle 每次我说时重建每个静态库./gradlew build .

那么如何解决这个问题呢?我可以在 CMakeLists.txt 中使用变量吗?这告诉我 Gradle/CMake 当前是为了调试还是为了发布而构建?我已经尝试过以下方法,但没有用:

IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
set(BUILDMODE "Debug")
ELSE()
set(BUILDMODE "Release")
ENDIF()

CMAKE_BUILD_TYPE使用 Gradle 和 Android 插件构建时似乎总是 != DEBUG 所以 BUILDMODE永远是Release .

我已经考虑这个问题好几个小时了,我几乎没有想法......不幸的是,似乎也不可能省略 CMake 的 add_subdirectory 的二进制文件参数。 .

我真的不知道在这里做什么,所以非常感谢任何帮助。

最佳答案

根据@Andreas 的评论,这里是如何使用 CMAKE_CURRENT_BINARY_DIR 检测 Android NDK CMake 构建中的 DebugRelease 变体:

if (CMAKE_CURRENT_BINARY_DIR MATCHES "debug")
message(STATUS "Debug build detected")
add_compile_options("-DANDROID_DEBUG") # <-- change this to have an effect on the build
else()
message(STATUS "Release build detected")
endif()

关于android - 使用 Gradle 和 CMake 将发布和调试子目录添加到 Android 构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com