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

来源:互联网 发布:js 弹出消息框 编辑:程序博客网 时间:2024/06/14 15:45

这里记载如何使用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!

大功告成!


1 0
原创粉丝点击