yocto下的cmake版本hello world,追加分層使用

這裏記載如何使用Yocto編譯一個cmake的helloworld的程序

我想把這個helloworld當成一個新的模塊區別與yocto版本的helloworld

1.所以先在yo目錄下,建立一個cmakehelloworld文件夾.

2.使用了層,需要在conf路徑下新建立一個文件叫,bblayers.conf,yocto用這個文件來管理層。

內容寫上這一句就可以了:

BBLAYERS += "${TOPDIR}/cmakehelloworld"

3.回到自己的層,也就是/cmakehelloworld/這個路徑裏,添加自己的層的配置文件,建立conf文件夾,在裏面建立一個叫layer.conf的文件:

內容爲:

BBFILES += "${LAYERDIR}/recipes/*.bb"
BBPATH .= ":${LAYERDIR}"
BBFILE_COLLECTIONS += "cmakehelloworld"
BBFILE_PATTERN_cmakehelloworld := "^${LAYERDIR}/"
BBFILE_PRIORITY_cmakehelloworld = 5

4.在cmakehelloworld路徑下放上我們的主角helloworld,先建立個source文件夾,在裏面寫一個main.c

內容爲

#include <stdio.h>

int main(){
    printf("Hello world ,I am Cmake in yocto!\n");
    return 0;
}

5.編譯上面的代碼,方法爲在cmakehelloworld路徑下建立build文件夾,在裏面放上CMakeLists.txt文件

內容爲:

PROJECT(hello_cm)
SET(SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/../source/main.c)
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../image)
ADD_EXECUTABLE(hello_cm ${SRC_LIST})

6.把編譯步驟寫進bb裏,方法爲在cmakehelloworld下建立recipes文件夾,在裏面放上hello_cmake.bb文件

內容爲:

inherit cmake

DESCRIPTION = "Hello world in cmake"
PN = 'hello_cm'
PV = '1'

SRCREV = "${AUTOREV}"
S      = "${TOPDIR}/cmakehelloworld/build"

7.由於yotco默認執行do_build task(修改默認task的方法爲BB_DEFAULT_TASK = "build"這裏的Build改成其他的就可以了),而base的class裏的build無法實現我們的Cmake編譯,所以在cmakehelloworld下建立classes,裏面放上cmake.bbclass

內容爲:

do_build() {
    cd ${S}
    cmake .
    make
}

到這裏就可以了,在yo路徑下執行bitbake hello_cm就可以看到在image裏生成的hello_cm執行程序,執行./hello_cm


Hello world ,I am Cmake in yocto!

大功告成!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章