CMake簡介,打包so文件,編譯實際項目 用valgrind測內存狀況

CMake簡介和使用示例   

 

CMake是經常使用的跨平臺編譯器。圖像這塊在給服務端作開發時,常有兩個需求:html

 (1)代碼打成.so包,供別人調用;學習

 (2)編譯、測試,用valgrind測內存狀況。測試

工程較大時,藉助CMake完成很方便。下面分別給出兩種狀況下,CMakeLists.txt的簡單示例。ui

 

1. 藉助CMake打.so包url

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

%hmqfua%60i

其中CMakeLists.txt內容:.net

 

 

cmake_minimum_required(VERSION 2.8)htm

aux_source_directory(. utils_src)blog

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

相關文章
相關標籤/搜索