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
)