參數傳遞流程
實現
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