CMakeList配置之编译多个.cpp文件

不说废话了,android studio2.2 以后的ndk编译引入的cmake,官方创建新的项目会有项目事例,看了一下多了一个Cmakelist.txt文件,大概了解了一下,自己新创建了.cpp文件,直接编译,果然出错了

03-14 23:07:01.886 8542-8542/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.chen.androidtools, PID: 8542
                                                 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.chen.androidtools-2/base.apk"],nativeLibraryDirectories=[/data/app/com.chen.androidtools-2/lib/x86, /data/app/com.chen.androidtools-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libiomove-lib.so"
                                                     at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                     at java.lang.System.loadLibrary(System.java:1076)
                                                     at com.chen.utils.IoFromC.<clinit>(IoFromC.java:20)
                                                     at com.chen.androidtools.MainActivity.onCreate(MainActivity.java:103)
                                                     at android.app.Activity.performCreate(Activity.java:6237)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:148)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

就是说没有找到编译的.so文件,初步猜想大概是和CMakeLists.txt有关

看了一下,google创建的模板里面有三个函数

-add_library(< name > [STATIC | SHARED | MODULE [EXCLUDE_FROM_ALL] source1 source2 … sourceN) )
- find_library
- target_link_libraries

看了以后我只对add比较有兴趣

目前百度的解决方案基本只有一个

#对应需要编译cpp的文件路径
file(GLOB native_srcs "src/main/cpp/*.cpp")

add_library( # Sets the name of the library.
             native-lib
             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             # Associated headers in the same location as their source
             # file are automatically included.
             # src/main/cpp/native-lib.cpp )
             ${native_srcs})

修改add函数的最后一个参数,将目录下所有的cpp文件全部编译.so

但是,这种感觉就像是被强奸了一样,目录下所有的全部编译,看着就难受啊,以后再分个包怎么办,还是好恶心的

所以我最终选择再次调用add_library函数

所以我选择再次调用add_library函数

最后再make project 就可以了这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值