ndk开发-gtest编译

不念不忘少年蓝@ 2022-04-05 07:54 526阅读 0赞

用NDK编译gtest库:

  1. gtest代码pull下来后,创建jni目录,将googleTest下文件放到jni目录下

  2. 在jni目录下创建Application.mk和Android.mk文件

Application.mk

  1. ##Application.mk
  2. #######################################################################
  3. APP_ABI := armeabi-v7a
  4. APP_MODULES := libgtest libgtest_main
  5. APP_STL := stlport_static
  6. APP_PLATFORM := android-18

Android.mk

  1. PROJECT := gtest
  2. LOCAL_PATH:= $(call my-dir)
  3. PRJ_TOP := $(call my-dir)
  4. include $(PRJ_TOP)/googletest/Android.mk
  1. 在jni/googletest目录下创建Android.mk

Android.mk

  1. ##Android.mk
  2. #######################################################################
  3. # gtest lib target
  4. LOCAL_PATH := $(call my-dir)
  5. include $(CLEAR_VARS)
  6. LOCAL_CPP_EXTENSION := .cc
  7. LOCAL_SRC_FILES := src/gtest-all.cc
  8. #LOCAL_C_INCLUDES := $(libgtest_target_includes)
  9. LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
  10. LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
  11. LOCAL_MODULE := libgtest
  12. LOCAL_MODULE_TAGS := eng
  13. include $(BUILD_STATIC_LIBRARY)
  14. #######################################################################
  15. # gtest_main lib target
  16. include $(CLEAR_VARS)
  17. LOCAL_CPP_EXTENSION := .cc
  18. LOCAL_SRC_FILES := src/gtest_main.cc
  19. LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
  20. LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
  21. LOCAL_STATIC_LIBRARIES := libgtest
  22. LOCAL_MODULE := libgtest_main
  23. LOCAL_MODULE_TAGS := eng
  24. include $(BUILD_STATIC_LIBRARY)
  1. ndk-build编译生成libgtest.a和libgtest_main.a

测试程序编译链接gtest库:

  1. 将交叉编译好的gtest库libgtest.a和libgtest_main.a放到测试代码目录

  2. 编写测试程序代码test.cpp

    include “gtest/gtest.h”

    include “downloader_interface.h”

    TEST(TestDemo, DL_CreateHandle)
    {

    1. DLHandle handle = DL_CreateHandle();
    2. ASSERT_NE(handle, (void*)NULL);
    3. DL_CloseHandle(handle);

    }

  3. 编写Android.mk

    LOCAL_PATH:=$(call my-dir)

    include $(CLEAR_VARS)
    LOCAL_MODULE := gtest_download
    LOCAL_SRC_FILES := test.cpp

    LOCAL_C_INCLUDES += $(LOCAL_PATH)/../include
    LOCAL_C_INCLUDES += $(LOCAL_PATH)/../src

    LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -DHAVE_PTHREADS
    LOCAL_LDFLAGS += -pie
    LOCAL_LDFLAGS += -L$(LOCAL_PATH)/
    LOCAL_LDLIBS += -llog -lz -lm
    LOCAL_LDLIBS += -lgtest -lgtest_main
    LOCAL_STATIC_LIBRARIES += download_a
    include $(BUILD_EXECUTABLE)

    $(call import-module,third_party/googletest)

gtest单元测试命令:

./gest_program —gtest_filter=dl_test.dl_http

发表评论

表情:
评论列表 (有 0 条评论,526人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NDK 开发

    为何要用到NDK? 概括来说主要分为以下几种情况: > 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 > > 2. 在NDK

    相关 使用NDK编译ffmpeg

    测试编译平台为linux,首先去ffmpeg官网下载linux版本ffmpeg并解压缩,本人编译版本为2.6.9。需要下载linux版本ndk并解压缩,版本为r10e。 修