溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么進(jìn)行ROS中cmake的簡(jiǎn)單使用

發(fā)布時(shí)間:2021-12-24 09:16:06 來(lái)源:億速云 閱讀:499 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么進(jìn)行ROS中cmake的簡(jiǎn)單使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

ROS中的編譯操作注意是利用自己的包管理工具

catkin_make

來(lái)進(jìn)行編譯。其中需要配置cmake的編譯配置文件。這里就討論下ROS需要的簡(jiǎn)單cmake入門。

cmake是什么?

CMake是個(gè)開(kāi)源的跨平臺(tái)自動(dòng)化建構(gòu)系統(tǒng),它用配置文件控制建構(gòu)過(guò)程(build process)的方式和Unix的Make相似,只是CMake的配置文件取名為CmakeLists.txt。Cmake并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)文件(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建構(gòu)方式使用。這使得熟悉某個(gè)集成開(kāi)發(fā)環(huán)境(IDE)的開(kāi)發(fā)者可以用標(biāo)準(zhǔn)的方式建構(gòu)他的軟件,這種可以使用各平臺(tái)的原生建構(gòu)系統(tǒng)的能力是CMake和SCons等其他類似系統(tǒng)的區(qū)別之處。CMake可以編譯源代碼、制做程序庫(kù)、產(chǎn)生適配器(wrapper)、還可以用任意的順序建構(gòu)可執(zhí)行文件。CMake支持in-place建構(gòu)(二進(jìn)文件和源代碼在同一個(gè)目錄樹(shù)中)和out-of-place建構(gòu)(二進(jìn)文件在別的目錄里),因此可以很容易從同一個(gè)源代碼目錄樹(shù)中建構(gòu)出多個(gè)二進(jìn)文件。CMake也支持靜態(tài)與動(dòng)態(tài)程序庫(kù)的建構(gòu)?!癈Make”這個(gè)名字是"cross platform make"的縮寫(xiě)。雖然名字中含有"make",但是CMake和Unix上常見(jiàn)的“make”系統(tǒng)是分開(kāi)的,而且更為高級(jí)。

1. 簡(jiǎn)單的例子,利用cmake來(lái)編譯一個(gè)簡(jiǎn)單的c文件(Ubuntu 14.04)其他Linux應(yīng)該一樣。

新建 t.c 文件

#include <stdio.h>
int main()
{
  printf("hello cmake\n");
}

同文件夾下新建 CMakeLists.txt 

cmake_minimum_required(VERSION 2.8)
project(test)
add_executable(test t.c)

在當(dāng)前文件夾運(yùn)行

$  cmake .
$  make

即可得到可執(zhí)行文件 'test',Linux運(yùn)行可以的得到結(jié)果。

2. 利用cmake編譯opencv

前提是假設(shè)你已經(jīng)安裝好了OpenCV庫(kù)。在Ubuntu平臺(tái)下運(yùn)行。

和例子1類似,在當(dāng)前文件夾新建project文件夾,里面分別是src文件夾,build文件夾,和文件CMakeLists.txt

目錄結(jié)果

.
|----build
|----CMakeLists.txt
|----src
         |---test.cpp

在CMakeLists.txt里面寫(xiě)入下面的內(nèi)容

cmake_policy(SET CMP0003 NEW)
cmake_minimum_required(VERSION 2.8)
project(test)
find_package(OpenCV REQUIRED)
add_executable(test ./src/test.cpp)
target_link_libraries(test ${OpenCV_LIBS})

在 `test.cpp` 里寫(xiě)下下面的內(nèi)容

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
using namespace cv;  
using namespace std; 
int main(int argc, char* argv[])  
{  
    Mat image;  
    
 
    if (argc != 2 || !image.data)   
    {  
        printf("No image data\n");  
        return -1;  
    }  
 image = imread(argv[1], 1);  
    namedWindow("Display Image");  
    imshow("Display Image", image);  
    waitKey(0);  
    return 0;  
}

這個(gè)文件的作用是讀入圖片并彈出窗口展示這張圖片,進(jìn)入build文件夾并運(yùn)行 cmake , make

$ cd build
$ cmake ../
$ make
$ ./test   ../path/to/your/test**.png

你將會(huì)看到運(yùn)行的結(jié)果。

上述就是小編為大家分享的怎么進(jìn)行ROS中cmake的簡(jiǎn)單使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI