Android Cmake日常爬坑记录

1.Cmake.txt引用多个.c/.cpp文件

例如:

add_library( lib_a STATIC
             ${CMAKE_CURRENT_SOURCE_DIR}/src/one.c 
             ${CMAKE_CURRENT_SOURCE_DIR}/src/two.c 
             ${CMAKE_CURRENT_SOURCE_DIR}/src/three.c )

可以更改为:

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

add_library( lib_a STATIC
             /src/one.c 
             /src/two.c 
             ${native_srcs} )

或者:

设置囊括编译cpp文件 
aux_source_directory(src/main/cpp SRC_LIST) 
然后直接引用${SRC_LIST}即可

2.debug 或者release版本

在cmake.txt添加下面一行。

SET(CMAKE_BUILE_TYPE DEBUG)  

设置编译类型debug 或者release。 debug 版会生成相关调试信息,可以使用GDB 进行 调试;release不会生成调试信息。当无法进行调试时查看此处是否设置为debug.

3.导入库文件

我以前都是用的addlibrary(),最近学习了一个新的方式,感觉很是简洁。

-L${CMAKE_SOURCE_DIR}/库的路径

# 导入FFmpeg的库文件
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/ffmpeg/libs/${CMAKE_ANDROID_ARCH_ABI}")

 

4.忽略库的顺序

最近在搞研究音视频方面的问题,在导入ffmpeg的时候,会出现引入库顺序不对导致编译错误的问题,这些其实都可以处理的。

关键字  -Wl,--start-group  内容内容   -Wl,--end-group

target_link_libraries(
        my-player
        ${log-lib}
        #忽略顺序开始
        -Wl,--start-group
        avcodec avfilter avformat avutil swresample swscale
        #忽略顺序结束
        -Wl,--end-group
        z
)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值