CMake简介,打包so文件,编译实际项目

CMake简介和使用示例   

 

CMake是常用的跨平台编译器。图像这块在给服务端做开发时,常有两个需求:

 (1)代码打成.so包,供别人调用;

 (2)编译、测试,用valgrind测内存情况。

工程较大时,借助CMake完成很方便。下面分别给出两种情况下,CMakeLists.txt的简单示例。


1. 借助CMake打.so包

 把目录utils下的文件打出.so包。

%hmqfua%60i

其中CMakeLists.txt内容:

cmake_minimum_required(VERSION 2.8)

aux_source_directory(. utils_src)

add_library(utils SHARED ${utils_src})

set_target_properties(utils PROPERTIES output_name "utils")

注意:前面的关键字可以大写也可以小写,括号内的关键字必须大写。


编译:

cmake .

make

生成了共享库libutils.so


2. 编译实际的项目

项目sticker_me中文件结构如下,其中build目录用于生成编译的结果。

CMake简介和使用示例 - 淮静 - 淮静的博客
 

它们之间的调用关系如下:

CMake简介和使用示例 - 淮静 - 淮静的博客
 

各个CMakeLists.txt如下:

./CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(sticker_me)

add_subdirectory(src)

add_subdirectory(facedetect)

add_subdirectory(utils)

src/CMakeLists.txt:

find_package(OpenCV REQUIRED)

include_directories(facedetect utils)

aux_source_directory(. src_dir)

add_executable(sticker_me ${src_dir})

target_link_libraries(sticker_me ${OpenCV_LIBS} utils facedetect)

facedetect/CMakeLists.txt:

include_directories(utils) 
aux_source_directory(. facedetect_dir) 
add_library(facedetect SHARED? ${facedetect_dir}) 
set_target_properties(facedetect PROPERTIES output_name "facedetect") 
target_link_libraries(facedetect utils)

utils/CMakeLists.txt:

aux_source_directory(. utils_dir) 
add_library(utils SHARED ${utils_dir}) 
set_target_properties(utils PROPERTIES output_name "utils") 


编译:

cd build

cmake ..

make


借助valgrind测试内存,log重定向到文件log.txt中:

cd build/src 
valgrind --leak-check=full --log-file=log.txt ./sticker_me


参考:

cmake_百度百科

CMake wiki

CMake快速入门教程:实战

cmake 学习笔记(一)

CMake Practice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值