ubuntu下編譯C++程序


1、CMake

定義:CMake是一個跨平台編譯工具,可以用來自動輸出makefile文件;

用法:(1)想要自動生成makefile,還需要編寫對應的CMakeLists.txt文件;

   (2)在CMakeLists.txt的同級目錄下使用"cmake ."命令就能生成對用的makefile文件;

語法解釋,以下面這個腳本為例:

cmake_minimum_required(VERSION 2.8)  //cmake最低要求版本2.8以上
project( DisplayImage )  //project不是強制性的,最好加上,這會引入兩個變量:DISPLAYIMAGE_BINARY_DIR和DISPLAYIMAGE_SOURCE_DIR
find_package( OpenCV REQUIRED ) //尋找庫文件
add_executable( DisplayImage DisplayImage.cpp )  //生成可執行文件
target_link_libraries( DisplayImage ${OpenCV_LIBS} ) //可執行文件和庫之間建立鏈接

2、makefile

定義:makefile是一個文件,它定義了一系列的規則來指定,哪些文件需要先編譯,哪些后編譯,哪些需要重新編譯,甚至於進行更復雜的功能操作;

cmake和makefile的關系如下:

第一個例子:編譯一個opencv小程序

(1)編寫源文件

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
//DisplayImage.cpp
int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }
    Mat image;
    image = imread( argv[1], 1 );
    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

 

(2)編寫CMakeLists.txt文件

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

 

(3)編譯

cmake .
make

 

(4)執行

./DisplayImage lena.jpg

 

(5)結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM