参数传递流程
image.png实现
gradle对命令行参数的响应
Android默认的C++构建方式
在默认的Android构建方式时,是支持debug类型,构建debug包时:./gradlew assembleDebug
对于C++构建配置如下:
android {
buildTypes {
release {
minifyEnabled false
}
debug {
externalNativeBuild {
cmake{
arguments '-DCMAKE_BUILD_TYPE=DEBUG'
}
}
}
}
externalNativeBuild {
cmake {
path "./src/CMakeLists.txt"
}
}
packagingOptions {
// exclude 'lib/*/libc++_shared.so'
doNotStrip "**.so"
}
}
只需在debug类型下,加入自定义的一个参数CMAKE_BUILD_TYPE,那么这个参数就能传入CMakeList。
自定义的打包任务
自定义的,不符合Android默认规则的gradle任务,需要自定义一个参数:
假设如下:./gradlew assembleRelease -PcppDebug
那么gradle如下:
def cppDebug = project.hasProperty('cppDebug')
// 自定义C++构建时,传入参数
arguments '-DCMAKE_BUILD_TYPE=' + (cppDebug ? 'DEBUG' : 'RELEASE')
CMakeList接受参数,生成代码内的宏
# debugif (CMAKE_BUILD_TYPE STREQUAL DEBUG)
message('当前编译开启了DEBUG宏!!!')
add_definitions(-DDEBUG)
endif ()
C++代码文件内使用宏
#ifdef DEBUG
// 配置了debug,就会输出日志
#pragma message("Warning:debug编译时!")
#endif
网友评论