Android Studio에서 Android NDK로 개발을 시작했지만 적절한 C++ 지원이 없으므로 큰 어려움이 있습니다. 그래서 나는 내 물건을 만들기 위해 cmake 프로젝트를 만들려고 노력합니다. 나는 android-cmake을 사용했으며 <android/log.h>
, <android/native_window.h>
및 아마도 <android/*>
인 클루 젼을 찾을 수 없다는 것을 제외하고 지금까지는 잘 작동합니다. IDE (Clion)도 그것 때문에 누락 된 것으로 표시합니다. CMakeLists.txt
에 뭔가 빠졌습니까?cmake로 빌드 할 때 안드로이드/log.h를 찾을 수 없습니다.
cmake_minimum_required(VERSION 2.8.4)
project(App)
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
include(AndroidNdkGdb)
include(AndroidNdkModules)
android_ndk_gdb_enable()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/src/main/libs/armeabi-v7a)
set(LIBRARY_DEPS GLESv2 android log)
include_directories(${PROJECT_SOURCE_DIR}/src/main/lib/armeabi-v7a/freetype/include/freetype2)
file(GLOB_RECURSE SRCS *.cpp)
file(GLOB_RECURSE HDRS *.h)
add_library(nativeegl SHARED ${SRCS} ${HDRS})
target_link_libraries(nativeegl log android)
android_ndk_gdb_debuggable(nativeegl)
및 cmake 출시 PARAMS :
-DCMAKE_TOOLCHAIN_FILE=android.toolchain.cmake \
-DANDROID_NDK=/opt/android-ndk -DCMAKE_BUILD_TYPE=Debug \
-DANDROID_ABI="armeabi-v7a" -DANDROID_STL=gnustl_static \
-DANDROID_NATIVE_API_LEVEL=android-21
그리고 이것이 내가 스튜디오에서 빌드 할 때 잘 작동 원래 Android.mk입니다 : 여기
은 CMakeLists.txt입니다LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := nativeegl
LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/*.cpp))
LOCAL_C_INCLUDES :=
LOCAL_CFLAGS := -std=c++11 -O2 -Wtype-limits -Wmissing-field-initializers -Wreturn-type -Wuninitialized
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue ndk_helper freetype
include $(BUILD_SHARED_LIBRARY)
$(call import-add-path,$(LOCAL_PATH)/../lib/$(TARGET_ARCH_ABI))
$(call import-module,freetype)
및 Application.mk :
APP_STL := gnustl_static
APP_PLATFORM := android-10
APP_ABI := armeabi-v7a
귀하의 도움에 감사드립니다.