Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从.mk迁移到CMakeList_Cmake_Android Ndk_Android.mk - Fatal编程技术网

从.mk迁移到CMakeList

从.mk迁移到CMakeList,cmake,android-ndk,android.mk,Cmake,Android Ndk,Android.mk,我有一些.mk文件(在Android上)如下所示: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := openal SRC_FILES := $(wildcard $(LOCAL_PATH)/../../../common/openal/*.c) SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES

我有一些.mk文件(在Android上)如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := openal
SRC_FILES := $(wildcard $(LOCAL_PATH)/../../../common/openal/*.c)
SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%) 
LOCAL_SRC_FILES = $(SRC_FILES)
LOCAL_LDLIBS = -llog
LOCAL_CFLAGS := -O3 -mno-thumb
LOCAL_CPPFLAGS := -O3 -mno-thumb
include $(BUILD_SHARED_LIBRARY)


include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE   := templateApp
LOCAL_CFLAGS   := -O3 -mno-thumb 
LOCAL_CPPFLAGS := $(LOCAL_CFLAGS)
LOCAL_C_INCLUDES = $(LOCAL_PATH)/../../../common/openal/
SRC_FILES := $(wildcard $(LOCAL_PATH)/../../*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/bullet/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/ttf/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/nvtristrip/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/png/*.c)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/zlib/*.c)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/detour/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/recast/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../common/vorbis/*.c)
SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES := $(SRC_FILES)
LOCAL_SHARED_LIBRARIES := libopenal
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../libs/armeabi 
LOCAL_LDLIBS += -lz -lm -ldl -lGLESv2 -lEGL -llog -lopenal
LOCAL_CFLAGS := -O3 -mno-thumb -Wno-write-strings
LOCAL_CPPFLAGS := -O3 -mno-thumb -Wno-write-strings
include $(BUILD_SHARED_LIBRARY)
我需要将其迁移到现代的CMake构建工具,这就是我目前所达到的程度:

cmake_minimum_required(VERSION 3.4.1)    

include_directories(src/main/cpp)
include_directories(src/main/cpp/common)
include_directories(src/main/cpp/common/bullet)
include_directories(src/main/cpp/common/detour)
include_directories(src/main/cpp/common/GLES2)
include_directories(src/main/cpp/common/nvtristrip)
include_directories(src/main/cpp/common/openal)
include_directories(src/main/cpp/common/png)
include_directories(src/main/cpp/common/recast)
include_directories(src/main/cpp/common/ttf)
include_directories(src/main/cpp/common/vorbis)
include_directories(src/main/cpp/common/zlib)

file(GLOB SOURCES_CPP "src/main/cpp/common/*.cpp")
file(GLOB SOURCES_C "src/main/cpp/common/*.c")

file(GLOB OPENAL_SOURCES_C "src/main/cpp/common/openal/*.c")

add_library( openal-lib SHARED ${OPENAL_SOURCES_C})

find_library( log-lib log )

target_link_libraries( openal-lib ${log-lib} )



add_library( native-lib SHARED 

             src/main/cpp/native-lib.cpp
             ${SOURCES_CPP}
             ${SOURCES_C} )

find_library( GLESv2-lib GLESv2 )
find_library( EGL-lib EGL )
find_library( z-lib z )
find_library( m-lib m )
find_library( dl-lib dl )


target_link_libraries( native-lib

               openal-lib
                       ${z-lib}
                       ${m-lib}
                       ${dl-lib}
                       ${log-lib}
                       ${GLESv2-lib}
                       ${EGL-lib})
我肯定做错了什么,但我找不到任何明确的信息来帮助我解决这个问题。在构建过程a之后,我发现:

Build command failed.
Error while executing process C:\Users\Fervill\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build D:\Android\GLCTest\app\.externalNativeBuild\cmake\debug\armeabi-v7a --target native-lib}
[1/1] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so
FAILED: cmd.exe /C "cd . && C:\Users\Fervill\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe  --target=armv7-none-linux-androideabi16 --gcc-toolchain=C:/Users/Fervill/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/Fervill/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libnative-lib.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/audio.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/font.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/gfx.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/light.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/matrix.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/md5.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/memory.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/navigation.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/obj.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/program.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/shader.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/sound.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/texture.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/thread.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/utils.cpp.o CMakeFiles/native-lib.dir/src/main/cpp/common/vector.cpp.o  ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libopenal-lib.so C:/Users/Fervill/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a C:/Users/Fervill/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/libm.a C:/Users/Fervill/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/libdl.a -llog -lGLESv2 -lEGL -latomic -lm && cd ."
D:\Android\GLCTest\app\src\main\cpp\common/font.cpp:115: error: undefined reference to 'stbtt_BakeFontBitmap'
D:\Android\GLCTest\app\src\main\cpp\common/md5.cpp:588: error: undefined reference to 'SetCacheSize(unsigned int)'
D:\Android\GLCTest\app\src\main\cpp\common/md5.cpp:596: error: undefined reference to 'GenerateStrips(unsigned short const*, unsigned int, PrimitiveGroup**, unsigned short*, bool)'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:78: error: undefined reference to 'unzOpen'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:85: error: undefined reference to 'unzGoToFirstFile'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:89: error: undefined reference to 'unzGetFilePos'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:91: error: undefined reference to 'unzLocateFile'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:93: error: undefined reference to 'unzGetCurrentFileInfo'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:100: error: undefined reference to 'unzOpenCurrentFilePassword'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:107: error: undefined reference to 'unzReadCurrentFile'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:109: error: undefined reference to 'unzCloseCurrentFile'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:111: error: undefined reference to 'unzClose'
D:\Android\GLCTest\app\src\main\cpp\common/memory.cpp:117: error: undefined reference to 'unzClose'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:45: error: undefined reference to 'dtFreeNavMesh(dtNavMesh*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:158: error: undefined reference to 'rcCalcBounds(float const*, int, float*, float*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:164: error: undefined reference to 'rcCalcGridSize(float const*, float const*, float, int*, int*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:171: error: undefined reference to 'rcAllocHeightfield()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:173: error: undefined reference to 'rcCreateHeightfield(rcHeightfield&, int, int, float const*, float const*, float, float)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:186: error: undefined reference to 'rcMarkWalkableTriangles(float, float const*, int, int const*, int, unsigned char*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:194: error: undefined reference to 'rcRasterizeTriangles(float const*, int, int const*, unsigned char const*, int, rcHeightfield&, int)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:210: error: undefined reference to 'rcFilterLowHangingWalkableObstacles(int, rcHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:214: error: undefined reference to 'rcFilterLedgeSpans(int, int, rcHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:219: error: undefined reference to 'rcFilterWalkableLowHeightSpans(int, rcHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:223: error: undefined reference to 'rcAllocCompactHeightfield()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:225: error: undefined reference to 'rcBuildCompactHeightfield(int, int, unsigned char, rcHeightfield&, rcCompactHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:231: error: undefined reference to 'rcFreeHeightField(rcHeightfield*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:234: error: undefined reference to 'rcErodeArea(unsigned char, int, rcCompactHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:239: error: undefined reference to 'rcBuildDistanceField(rcCompactHeightfield&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:242: error: undefined reference to 'rcBuildRegions(rcCompactHeightfield&, int, int, int)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:248: error: undefined reference to 'rcAllocContourSet()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:250: error: undefined reference to 'rcBuildContours(rcCompactHeightfield&, float, int, rcContourSet&, int)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:256: error: undefined reference to 'rcAllocPolyMesh()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:258: error: undefined reference to 'rcBuildPolyMesh(rcContourSet&, int, rcPolyMesh&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:263: error: undefined reference to 'rcAllocPolyMeshDetail()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:265: error: undefined reference to 'rcBuildPolyMeshDetail(rcPolyMesh const&, rcCompactHeightfield const&, float, float, rcPolyMeshDetail&)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:272: error: undefined reference to 'rcFreeCompactHeightfield(rcCompactHeightfield*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:275: error: undefined reference to 'rcFreeContourSet(rcContourSet*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:327: error: undefined reference to 'dtCreateNavMeshData(dtNavMeshCreateParams*, unsigned char**, int*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:333: error: undefined reference to 'dtAllocNavMesh()'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:335: error: undefined reference to 'dtNavMesh::init(unsigned char*, int, int, int)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:340: error: undefined reference to 'rcFreePolyMesh(rcPolyMesh*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:343: error: undefined reference to 'rcFreePolyMeshDetail(rcPolyMeshDetail*)'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:367: error: undefined reference to 'dtNavMesh::findNearestPoly(float const*, float const*, dtQueryFilter const*, float*) const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:373: error: undefined reference to 'dtNavMesh::findNearestPoly(float const*, float const*, dtQueryFilter const*, float*) const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:379: error: undefined reference to 'dtNavMesh::findPath(unsigned int, unsigned int, float const*, float const*, dtQueryFilter const*, unsigned int*, int) const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:393: error: undefined reference to 'dtNavMesh::closestPointOnPoly(unsigned int, float const*, float*) const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:401: error: undefined reference to 'dtNavMesh::findStraightPath(float const*, float const*, unsigned int const*, int, float*, unsigned char*, unsigned int*, int) const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:484: error: undefined reference to 'dtNavMesh::getMaxTiles() const'
D:\Android\GLCTest\app\src\main\cpp\common/navigation.cpp:486: error: undefined reference to 'dtNavMesh::getTile(int)'
D:\Android\GLCTest\app\src\main\cpp\common/obj.cpp:608: error: undefined reference to 'SetCacheSize(unsigned int)'
D:\Android\GLCTest\app\src\main\cpp\common/obj.cpp:614: error: undefined reference to 'GenerateStrips(unsigned short const*, unsigned int, PrimitiveGroup**, unsigned short*, bool)'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:43: error: undefined reference to 'ov_open_callbacks'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:49: error: undefined reference to 'ov_info'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:54: error: undefined reference to 'ov_pcm_total'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:63: error: undefined reference to 'ov_read'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:84: error: undefined reference to 'ov_clear'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:117: error: undefined reference to 'ov_open_callbacks'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:123: error: undefined reference to 'ov_info'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:149: error: undefined reference to 'ov_read'
D:\Android\GLCTest\app\src\main\cpp\common/sound.cpp:186: error: undefined reference to 'ov_clear'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:107: error: undefined reference to 'png_create_read_struct'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:112: error: undefined reference to 'png_create_info_struct'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:114: error: undefined reference to 'png_set_read_fn'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:116: error: undefined reference to 'png_read_info'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:118: error: undefined reference to 'png_get_bit_depth'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:120: error: undefined reference to 'png_get_color_type'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:123: error: undefined reference to 'png_set_expand'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:126: error: undefined reference to 'png_set_expand'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:128: error: undefined reference to 'png_get_valid'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:129: error: undefined reference to 'png_set_expand'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:132: error: undefined reference to 'png_set_strip_16'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:135: error: undefined reference to 'png_set_gray_to_rgb'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:137: error: undefined reference to 'png_read_update_info'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:139: error: undefined reference to 'png_get_IHDR'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:205: error: undefined reference to 'png_read_image'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:207: error: undefined reference to 'png_read_end'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:209: error: undefined reference to 'png_destroy_read_struct'
D:\Android\GLCTest\app\src\main\cpp\common/texture.cpp:87: error: undefined reference to 'png_get_io_ptr'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

我做错了什么?如何摆脱那些讨厌的错误日志

事实上,在CMakeLists.txt中,源文件的目录结构及其对应的反映有很多错误。我错误地认为文件(GLOB..)将在子目录中查找源。而且我在应该查找*.c的地方使用了*.cpp(没有注意到这一点)。以下是最终的工作解决方案:

cmake_minimum_required(VERSION 3.4.1)

include_directories(src/main/cpp)
include_directories(src/main/cpp/common)
include_directories(src/main/cpp/common/bullet)
include_directories(src/main/cpp/common/detour)
include_directories(src/main/cpp/common/GLES2)
include_directories(src/main/cpp/common/nvtristrip)
include_directories(src/main/cpp/common/openal)
include_directories(src/main/cpp/common/png)
include_directories(src/main/cpp/common/recast)
include_directories(src/main/cpp/common/ttf)
include_directories(src/main/cpp/common/vorbis)
include_directories(src/main/cpp/common/zlib)


file(GLOB ROOT_SOURCES_CPP "src/main/cpp/common/*.cpp")
file(GLOB BULLET_SOURCES_CPP "src/main/cpp/common/bullet/*.cpp")
file(GLOB DETOUR_SOURCES_CPP "src/main/cpp/common/detour/*.cpp")
file(GLOB NVTRISTRIP_SOURCES_CPP "src/main/cpp/common/nvtristrip/*.cpp")
file(GLOB PNG_SOURCES_C "src/main/cpp/common/png/*.c")
file(GLOB RECAST_SOURCES_CPP "src/main/cpp/common/recast/*.cpp")
file(GLOB TTF_SOURCES_CPP "src/main/cpp/common/ttf/*.cpp")
file(GLOB VORBIS_SOURCES_C "src/main/cpp/common/vorbis/*.c")
file(GLOB ZLIB_SOURCES_C "src/main/cpp/common/zlib/*.c")



file(GLOB OPENAL_SOURCES_C "src/main/cpp/common/openal/*.c")

add_library( openal-lib             
             SHARED            
             ${OPENAL_SOURCES_C})



find_library( log-lib              
              log )

target_link_libraries( openal-lib 

                       ${log-lib})

add_library( native-lib
             SHARED
             src/main/cpp/native-lib.cpp
             ${ROOT_SOURCES_CPP}
             ${BULLET_SOURCES_CPP}
             ${DETOUR_SOURCES_CPP}
             ${NVTRISTRIP_SOURCES_CPP}
             ${PNG_SOURCES_C}
             ${RECAST_SOURCES_CPP}
             ${TTF_SOURCES_CPP}
             ${VORBIS_SOURCES_C}
             ${ZLIB_SOURCES_C})

find_library( GLESv2-lib GLESv2 )
find_library( EGL-lib EGL )
find_library( z-lib z )
find_library( m-lib m )
find_library( dl-lib dl )

target_link_libraries( native-lib 

                       openal-lib
                       ${z-lib}
                       ${m-lib}
                       ${dl-lib}
                       ${log-lib}
                       ${GLESv2-lib}
                       ${EGL-lib})

实际上,在CMakeLists.txt中,源文件的目录结构及其相应的反映有很多错误。我错误地认为文件(GLOB..)将在子目录中查找源。而且我在应该查找*.c的地方使用了*.cpp(没有注意到这一点)。以下是最终的工作解决方案:

cmake_minimum_required(VERSION 3.4.1)

include_directories(src/main/cpp)
include_directories(src/main/cpp/common)
include_directories(src/main/cpp/common/bullet)
include_directories(src/main/cpp/common/detour)
include_directories(src/main/cpp/common/GLES2)
include_directories(src/main/cpp/common/nvtristrip)
include_directories(src/main/cpp/common/openal)
include_directories(src/main/cpp/common/png)
include_directories(src/main/cpp/common/recast)
include_directories(src/main/cpp/common/ttf)
include_directories(src/main/cpp/common/vorbis)
include_directories(src/main/cpp/common/zlib)


file(GLOB ROOT_SOURCES_CPP "src/main/cpp/common/*.cpp")
file(GLOB BULLET_SOURCES_CPP "src/main/cpp/common/bullet/*.cpp")
file(GLOB DETOUR_SOURCES_CPP "src/main/cpp/common/detour/*.cpp")
file(GLOB NVTRISTRIP_SOURCES_CPP "src/main/cpp/common/nvtristrip/*.cpp")
file(GLOB PNG_SOURCES_C "src/main/cpp/common/png/*.c")
file(GLOB RECAST_SOURCES_CPP "src/main/cpp/common/recast/*.cpp")
file(GLOB TTF_SOURCES_CPP "src/main/cpp/common/ttf/*.cpp")
file(GLOB VORBIS_SOURCES_C "src/main/cpp/common/vorbis/*.c")
file(GLOB ZLIB_SOURCES_C "src/main/cpp/common/zlib/*.c")



file(GLOB OPENAL_SOURCES_C "src/main/cpp/common/openal/*.c")

add_library( openal-lib             
             SHARED            
             ${OPENAL_SOURCES_C})



find_library( log-lib              
              log )

target_link_libraries( openal-lib 

                       ${log-lib})

add_library( native-lib
             SHARED
             src/main/cpp/native-lib.cpp
             ${ROOT_SOURCES_CPP}
             ${BULLET_SOURCES_CPP}
             ${DETOUR_SOURCES_CPP}
             ${NVTRISTRIP_SOURCES_CPP}
             ${PNG_SOURCES_C}
             ${RECAST_SOURCES_CPP}
             ${TTF_SOURCES_CPP}
             ${VORBIS_SOURCES_C}
             ${ZLIB_SOURCES_C})

find_library( GLESv2-lib GLESv2 )
find_library( EGL-lib EGL )
find_library( z-lib z )
find_library( m-lib m )
find_library( dl-lib dl )

target_link_libraries( native-lib 

                       openal-lib
                       ${z-lib}
                       ${m-lib}
                       ${dl-lib}
                       ${log-lib}
                       ${GLESv2-lib}
                       ${EGL-lib})

看起来您忘了添加一些要链接的库。错误日志还显示用于链接的确切命令行。您可以将此命令行与您正在转换的原始
.mk
文件发出的命令行进行比较。@Tsyvarev是的,这会有所帮助,但我无法运行原始.mk文件。我只是想知道,例如,第一个与memory.cpp相关的错误抱怨zlib中对unzOpen的未定义引用,该引用由find_library(z-lib z)指向,并在CMakeLists中的target_link_libraries子句中链接,该问题随附于此。。。为什么unzOpen不可见??((我不知道…以防万一,因为很多人在这方面得到了错误的信息:ndk build不会去任何地方。如果你迁移是因为你认为ndk强迫你,我们不会。如果你迁移是因为其他原因,请忽略我:)看起来您忘记添加一些要链接的库了。错误日志还显示了用于链接的确切命令行。您可以将此命令行与您正在转换的原始
.mk
文件发出的命令行进行比较。@Tsyvarev是的,这会有帮助,但我无法运行原始.mk文件。例如,我只是想知道例如,第一个与memory.cpp相关的错误抱怨zlib中对unzOpen的引用未定义,该引用由find_library(z-lib z)指向,并在CMakeLists的target_link_libraries子句中链接,该子句随附此问题…为什么unzOpen不可见((我不知道……以防万一,因为很多人在这方面得到了错误的信息:ndk build不会去任何地方。如果你迁移是因为你认为ndk强迫你去做,我们不会。如果你迁移是因为其他原因,请忽略我:)GLOB_RECURSE模式将遍历匹配目录的所有子目录并匹配文件。src:GLOB_RECURSE模式将遍历匹配目录的所有子目录并匹配文件。src: