首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cmake测试被忽略-在android中用gradle构建cmake项目

Cmake测试被忽略-在android中用gradle构建cmake项目
EN

Stack Overflow用户
提问于 2018-04-20 07:02:23
回答 1查看 642关注 0票数 0

我正在尝试将https://github.com/j0r1/JRTPLIB集成到gradle中。关于readme,已经有关于如何将库编译为在Android上安装的教程,但是我需要gradle集成。

下面是我如何将项目添加到我的gradle文件中:

https://github.com/lucaszanella/jscam/blob/ecc99f430b360f7e1aa5bf687633a5e3557c045e/src/jscam/android/app/build.gradle#L118

我收到了一个编译错误,因为我的系统库不支持ifaddrs。然而,该项目的策划者对此有一个测试:

代码语言:javascript
复制
jrtplib_include_test(ifaddrs.h RTP_SUPPORT_IFADDRS "// No ifaddrs support")

,那么,为什么gradle试图构建一些没有通过测试的东西呢?

下面是编译我的应用程序时的错误:

代码语言:javascript
复制
Error while executing '/android-sdk-linux/cmake/3.6.4111459/bin/cmake' with arguments {--build /home/project/src/jscam/android/app/.externalNativeBuild/cmake/debug/x86 --target jrtplib-shared}
  [1/3] Building CXX object src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o
  [2/3] Building CXX object src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o
  FAILED: /android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=i686-none-linux-android --gcc-toolchain=/android-sdk-linux/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/android-sdk-linux/ndk-bundle/sysroot  -DJRTPLIB_COMPILING -Djrtplib_shared_EXPORTS -I/home/project/src/jscam/JRTPLIB/src -Isrc -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward-isystem /android-sdk-linux/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -fPIC -MD -MT src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o -MF src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o.d -o src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o -c /home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp
  /home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp:1575:2: error: use of undeclared identifier 'getifaddrs'
          getifaddrs(&addrs);
          ^
  /home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp:1588:2: error: use of undeclared identifier 'freeifaddrs'
          freeifaddrs(addrs);
          ^
  2 errors generated.
  FAILED: /android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=i686-none-linux-android --gcc-toolchain=/android-sdk-linux/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/android-sdk-linux/ndk-bundle/sysroot  -DJRTPLIB_COMPILING -Djrtplib_shared_EXPORTS -I/home/project/src/jscam/JRTPLIB/src -Isrc -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward-isystem /android-sdk-linux/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -fPIC -MD -MT src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o -MF src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o.d -o src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o -c /home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp
  /home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp:1813:2: error: use of undeclared identifier 'getifaddrs'
          getifaddrs(&addrs);
          ^
  /home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp:1826:2: error: use of undeclared identifier 'freeifaddrs'
          freeifaddrs(addrs);
          ^
  2 errors generated.
  ninja: build stopped: subcommand failed.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 11:38:19

Android为你准备了<ifaddrs.h>。但是缺少的函数,如getifaddrs(),可用于__ANDROID_API__ 24及更高版本,而您的项目则设置为

如果您的库将与低于24的minSdkVersion一起使用,则不能使用这些函数。不幸的是,JRTPLIB似乎没有对ifaddr的如此细粒度的支持,但是如果您选择的话,您可以强制关闭RTP_SUPPORT_IFADDRS

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49935883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档