.so 依赖目录 cmake_cmake常规使用

3607f1767544c017470975407621fd6f.png

相比于手动写Makefile,使用cmake再方便不过了,简单的几行命令就可以自动化生成Makefile,另外对于linux和window都支持。下面以一个实例来展示cmake的便捷。

cmake也是一种脚本语言,脚本文件名称必须为CMakelists.txt。假如一个项目的原代码结构如下:

----VideoProcess
          |----main.cpp
          |----CMakeLists.txt
          |----videoparse
                   |----videoparse.h
                   |----videoparse.cpp
                   |----CMakeLists.txt
          |----lib
          |----build

其中videoparse子目录中的文件是为了生成一个动态库videoparse.so,main.cpp中会调用动态库videoparse.so生成可执行文件VideoProcess.

对于这种每个子目录中的源码文件需要独立生成一个库或者可执行文件的情况,通常在每个子目录中放置一个CMakeLists.txt,这样每个模块可以独立生成。videoparse目录中的CMakelists.txt内容如下:

cmake_minimum_required(VERSION 3.4)
message(STATUS "sub cmakelists.txt")    #打印一些你想了解的信息
message(STATUS ${PROJECT_SOURCE_DIR})   #
add_compile_options(-g -fpic)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)#设置库的输出目录
link_directories(/usr/local/lib)                    #依赖库查找路径
add_library(videoparse SHARED videoparse.cpp)      #生成库,SHARED动态库,STATIC静态库
target_link_libraries(videoparse  avutil avcodec avformat)#设置依赖库的情况。

根目录下的CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.4)

project(VideoProcess)                      #设置项目名称
message(STATUS "root cmakelists.txt")
message(STATUS ${PROJECT_SOURCE_DIR})
add_subdirectory(${PROJECT_SOURCE_DIR}/videoparse)#递归执行子目录中的CMakeLists.txt

include_directories(${PROJECT_SOURCE_DIR}/videoparse)     #查找动态库的头文件
link_directories(/usr/local/lib ${PROJECT_SOURCE_DIR}/lib)#设置依赖库查找路径
add_executable(VideoProcess main.cpp)                     #生成可执行程序
target_link_libraries(VideoProcess videoparse)            #设置依赖库

进入到build目录执行cmake .. 在build目录中会生成对应的Makefile,然后执行make即可。

cmake 参考文档:

  • https://github.com/Wigner-GPU-Lab/Teaching/tree/master/CMake/Lesson1_CompileC_CPP
  • https://github.com/chaneyzorn/CMake-tutorial
  • https://github.com/zdzhaoyong/PICMake
  • https://github.com/xizhibei/blog/issues
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值