cmake & make入門

1. 爲何須要Makefile而後經過make來構建可執行程序?程序員

make是一個工具,它控制可執行程序和程序源文件中非源碼文件的生成,而Makefile就是制定了一系列規則,告訴make如何構建該程序。須要make的緣由是當一個project有不少源文件和頭文件的時候,程序員編寫好Makefile,用戶就不須要知道這些文件之間的依賴關係,既能夠用一個簡單的命令「make」將可執行文件構建完成。windows

另外,使用make的另外一個好處是,當咱們只改變了project中某一個或者某幾個源文件時,從新編譯整個程序效率很低,可是用make進行編譯,它僅僅會更新那些直接或者間接依賴這些改變的源碼文件的非源碼文件。工具

2. 有人make爲何還要cmakeui

對於大工程,寫makefile很是麻煩,因此就設計cmake讀入全部源文件,自動生成makefile, 這就是cmake工具,相應的,就要編寫CMakeLists.txt文件,這個文件比makefile易讀性更強,也更容易編寫。編寫完畢後,執行cmake就會產生Makefile, 而後make生成可執行文件。spa

並且Makefile是在類unix環境下的項目管理工具,對windows下不太友好,cmake是跨平臺項目管理工具。設計

3. 給出個例子編譯opencv代碼unix

g++ `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs`

./opencvcode

CMakeLists.txtblog

cmake_minimum_required(VERSION 2.8)  
project(opencv)  
find_package(OpenCV REQUIRED)    
add_executable(opencv opencv.cpp)  
target_link_libraries(opencv ${OpenCV_LIBS})  

cmake .項目管理

make

./opencv

 

具體的編寫規則見下參考連接

http://liqiang311.com/cpp/make%E4%B8%8Ecmake%E5%AD%A6%E4%B9%A0/

相關文章
相關標籤/搜索