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
)

猜你喜欢

转载自blog.csdn.net/ma598214297/article/details/88091930
今日推荐