您好,登錄后才能下訂單哦!
這期內(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è)資訊頻道。
免責(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)容。