CMake简介,打包so文件,编译实际项目
2016-08-23 11:35
330 查看
CMake简介和使用示例
CMake是常用的跨平台编译器。图像这块在给服务端做开发时,常有两个需求:
(1)代码打成.so包,供别人调用;
(2)编译、测试,用valgrind测内存情况。
工程较大时,借助CMake完成很方便。下面分别给出两种情况下,CMakeLists.txt的简单示例。
1. 借助CMake打.so包
把目录utils下的文件打出.so包。
其中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目录用于生成编译的结果。
它们之间的调用关系如下:
各个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 buildcmake ..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
相关文章推荐
- Mac COCOS2D-X用NDK编译安卓项目,打包成.so文件总结
- 编译项目打包成so文件
- android源码中编译打包so文件进apk
- android项目中配置NDK自动编译生成so文件
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- IDEA下maven编译打包Java项目成jar包但是resource下配置文件打包不成功
- [Python]项目打包:5步将py文件打包成exe文件 简介
- 实现 libYUV打包编译成so文件,并实现NV21转yuv420转码操作
- 手写选择题识别-生成编译opencv项目.so文件-失败
- android ndk第一步使用ndk和Cmake编译.so文件
- 如何将C++编译好的so文件打包到jar包中
- Eclipse android项目中配置NDK自动编译生成so文件
- 【转】如何把ndk编译出来的可执行文件伪装成so打包到apk中
- Android开发中如何将自己编译的.so文件用到其他的项目中
- 手工编译、运行JavaSE项目,且此项目需要第三方jar包支持,且文件中有打包。
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- cocos打包apk,编译.so文件出错解决
- Android项目打包时指定支持的CPU架构,防止多余so文件
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!