[英]Use different VersionCode for Debug/Release android gradle build
[英]Adding release and debug subdirectories to Android build with Gradle and CMake
我正在尝试将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()
使用Gradle和Android插件构建时, CMAKE_BUILD_TYPE
似乎总是!= DEBUG,因此BUILDMODE
将永远是Release
。
我已经考虑了好几个小时了,而且我几乎没有想法......不幸的是,似乎也没有可能省略CMake的add_subdirectory
的二进制文件参数。
我真的不知道该怎么做,所以任何帮助都非常感激。
根据@Andreas的评论,这里是如何使用CMAKE_CURRENT_BINARY_DIR
来检测Android NDK CMake构建中的Debug
或Release
变体:
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()
如果没有明确设置上游,您可能想要设置它。
if (NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Debug)
endif()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.