android studio按照文档构建c++编译工程报了cmakelist.txt相关的错误,请问那个大佬遇到过讲解一下[问题点数:30分]

li669007031 2016-12-30 03:36:41
编译报错如下:
Build command failed.
Error while executing 'D:\SDK\cmake\3.6.3155560\bin\cmake.exe' with arguments {-HD:\MyTest\MyCpp\app -BD:\MyTest\MyCpp\app\.externalNativeBuild\cmake\debug\armeabi-v7a -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi-v7a -DANDROID_NDK=D:\SDK\android-ndk-r12b -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\MyTest\MyCpp\app\build\intermediates\cmake\debug\obj\armeabi-v7a -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=D:\SDK\cmake\3.6.3155560\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=D:\SDK\cmake\3.6.3155560\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=19 -DCMAKE_C_FLAGS=-D_EXAMPLE_C_FLAG1 -D_EXAMPLE_C_FLAG2 -DCMAKE_CXX_FLAGS=-D__STDC_FORMAT_MACROS -DCMAKE_VERBOSE_MAKEFILE=TRUE}
-- Check for working C compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe
-- Check for working CXX compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!
See also "D:/MyTest/MyCpp/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/CMakeOutput.log".
CMake Error at CMakeLists.txt:12 (add_library):
The target name "test" is reserved or not valid for certain CMake features,
such as generator expressions, and may result in undefined behavior.
CMake Error at CMakeLists.txt:43 (target_link_libraries):
Cannot specify link libraries for target "test" which is not built by this
project.
Error:executing external native build for cmake D:\MyTest\MyCpp\app\CMakeLists.txt
Build command failed.
Error while executing 'D:\SDK\cmake\3.6.3155560\bin\cmake.exe' with arguments {-HD:\MyTest\MyCpp\app -BD:\MyTest\MyCpp\app\.externalNativeBuild\cmake\release\armeabi-v7a -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi-v7a -DANDROID_NDK=D:\SDK\android-ndk-r12b -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\MyTest\MyCpp\app\build\intermediates\cmake\release\obj\armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=D:\SDK\cmake\3.6.3155560\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=D:\SDK\cmake\3.6.3155560\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=19 -DCMAKE_C_FLAGS=-D_EXAMPLE_C_FLAG1 -D_EXAMPLE_C_FLAG2 -DCMAKE_CXX_FLAGS=-D__STDC_FORMAT_MACROS -DCMAKE_VERBOSE_MAKEFILE=TRUE}
-- Check for working C compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe
-- Check for working CXX compiler: D:/SDK/android-ndk-r12b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!
See also "D:/MyTest/MyCpp/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/CMakeOutput.log".
CMake Error at CMakeLists.txt:12 (add_library):
The target name "test" is reserved or not valid for certain CMake features,
such as generator expressions, and may result in undefined behavior.
CMake Error at CMakeLists.txt:43 (target_link_libraries):
Cannot specify link libraries for target "test" which is not built by this
project.
Error:executing external native build for cmake D:\MyTest\MyCpp\app\CMakeLists.txt
...全文
1273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘_sir 2019-04-25
  • 打赏
  • 举报
回复
博主我现在也遇见这个问题请问怎么去解决 谢谢
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
SerialPort

# Sets the library as a shared library.
SHARED

# Provides a relative path to your source file(s).
src/main/jni/SerialPort.c )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
log-lib

# Specifies the name of the NDK library that
# you want CMake to locate.
log )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
SerialPort

# Links the target library to the log library
# included in the NDK.
${log-lib} )
aidiaidiaidi 2017-10-31
  • 打赏
  • 举报
回复
厉害了 ,我刚好遇到这个问题
li669007031 2016-12-31
  • 打赏
  • 举报
回复
问题解决了,研究了一晚上其实是我的cmakelist.txt中so库的名称不符合规范,android自己建立的c++支持项目中库名是native-lib,
我直接写的库名是test,必须将库名写成test-lib,然后编译就可以了

开箱即用篇 工程解压后就只有如图所示这些: .vs  —— 一些配置文件,非常重要; JBzlib —— 工程源码、库、头文件等; JBzlib.sln  —— 解决方案,安装好 vs2017 双击运行直接可以编译。 先不急着打开解决方案,先打开 JBzlib 文件夹: elib —— 实际上就是易的安装目录下的 sdk 文件夹中的 elib,也就是官方提供的支持库开发 SDK,其实可以直接 include 的,但是为了打包我直接复制到工程里,这个是我自己电脑上的,5.4.1版本的 SDK,新版的貌似增加和改变了一些东西,更换的时候注意; zlib-1.2.8 —— zlib 1.2.8 的头文件(其实包括源文件也打包了),同样正常情况下是直接 include 的,但是为了打包我直接复制到工程里; zlibstat.lib —— zlib 的静态链接库; *.h、*.cpp、*.def —— 这些就是支持库的源文件和头文件等了; 其它 —— vs 工程的文件; 好了现在打开刚才的 JBzlib.sln,注意在此之前一定要安装 好 vs2017 (安装的时候不要省空间,跟 c/c++ 有关的全打勾,包括单个组件也打勾,硬盘不值钱。): JBzlib.h  里的 guid 一定不要自己随便编,用 guidgen.exe 来生成(只要你安装了 vs2017,电脑上就一定有 guidgen.exe,搜索一下,或者易的安装目录下也有): JBzlib.cpp  中是主要部,包括支持库的常量、数据类型、导出命令以及命令的参数都在这里,注意 __E_STATIC_LIB 这个宏(都有汉字说明,别瞎改一般不会错): JBzlib.def 这个导出文件一定要有,改个名字复制进去啥都不用管: 自带了 6 种配置: fne、fne_bak  —— 后者是前者的备份,用来编译生成 *.fne 动态支持库,但是无法静编; static_lib、static_lib_bak  —— 后者是前者的备份,用来编译生成和 *.fne 对应的 *_static.lib 静态库,从而可以静编 debug、release  —— 创建项目自带的,不用管; 原理半解读篇 上面的部顾名思义,给开箱即用的朋友用的,下面是解读原理,为什么说是半解读呢?因为也是个半吊子,很多都是玄学,凑合看下。 (注意:均以 vs2017 为例) 新建一个动态链接库项目: 然后按照打包的工程进行一些文件的复制粘贴改名啥的库的导入啥的,能看到这里的应该这点不成问题吧? 然后打开项目属性页,右上角配置管理器,新建 fne 和 static_lib 的 win32 平台的空配置: 然后按照打包的工程的 fne 和 static_lib 配置一项一项地对应着修改配置,不要问为什么,老夫也不知道为什么,它就这样就可以编译成功,不要问为什么,不要问。。。 注意 fne 和 static_lib 的有一个地方都要改一下,跟你的项目名对应,其它的不要动。。。不要动。。。 原理很简单,vs 提供了这种平台工具集,相当于一种降级,就可以让 vc98 成功 link 了。 但是 ,不要用你所希望使用的链接器无法链接的数据类型和函数,尽可能简单,当然如果你的易用的是 vs2015 甚至 vs2017 的链接器,就会好很多。 为什么要打这么多字配这么多图来享,因为我希望抛砖引玉,能吸引到有能力的朋友来制作支持库,毕竟" 用 VC6.0 做个支持库吧 " 这种"厚颜无耻"的请求我都不好意思说出口,但是用 vs2017 的话就不一样了,至少是个先进的 IDE,对吧?希望大伙一起给易这潭死水增添一点活力,不要整天觉得别的语言鄙视自己,丰富类库,真正把快速开发、简单易用这些做到,还是可能有活路的。 (写到这里,想了想干脆建了个群用来交流,547525064,专注交流支持库制作,我自己是个 vc 苦手,希望来几个大佬日常指导~ 哦对了对了,忘了说享的这个支持库具体的用处了: 网页_gzip解压(),都用过吧,这个就是那个用处。 很多人可能跟我一样,用易写请求的时候,为了不多带一个.dll,都不进行压缩也不接收压缩。 但是做爬虫或者请求频繁的时候这样效率很低,用了 gzip 就不一样了,毕竟网络传输和本地解压相比,是很费很费很费时间和资源的。 解压速度方面,调试模式支持库比调试模式的 zlibwapi.dll 调用慢不少,但是编译后速度还是一致的,很可观。 支持库公开的为数不多的命令全是指针操作(没研究怎么让命令可以是自定义数据,而且指针的比较灵活,因为我觉得 gzip 不可预估长度,是更适合流式解压的。 修改了一下 zy 的 zlib 模块的代码,写了个 网页_gzip解压(),测试不多,有 BUG 反馈或者自行修改。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧