0

我是 Yocto 和 cmake 的新手。在互联网上查找和搜索后,我能够制作自己的食谱,并能够使用来自 Yocto 食谱的 cmake 成功编译代码。但是编译和生成的二进制文件位于代码源文件所在的 build 文件夹中。使用 Yocto 生成图像时,如何将二进制文件从构建文件夹复制到自定义文件系统路径。

我的 .bb 文件目前如下所示:

#
# This file is the pscode recipe.
#

SUMMARY = "Simple test application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://src/*     \
           file://include/* \
           file://CMakeLists.txt\
          "

S = "${WORKDIR}"

do_configure() {
    cmake ../
}

inherit pkgconfig cmake

do_install() {
         install -d ${D}/home/first
         cp -r ${WORKDIR} ${D}/home/first
         #install -m 0755 ${S} ${D}/home/first
}


FILES_${PN} += "/home/first"

这会出错

cp: cannot copy a directory <path-to-the-test-folder-in-temp> into itself, <path-to-the-test-folder-in-temp/image/home/first>

我可以请人指导我。先感谢您。

4

1 回答 1

1

就像建议的评论一样:

SUMMARY = "Simple test application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://src/*     \
           file://include/* \
           file://CMakeLists.txt \
          "

S = "${WORKDIR}"

inherit pkgconfig cmake

如果 CMakeLists.txt 使用 install 命令,那么 bitbake 将为您完成安装,您无需定义自己的 do_install。有关详细信息,请参阅cmake-documentation-install。这是二进制文件的示例:

install(TARGETS <your cmake target> DESTINATION bin)

从 cmake 安装文档:

如果给出完整路径(带有前导斜杠或驱动器号),则直接使用它。如果给出了相对路径,则相对于 CMAKE_INSTALL_PREFIX 变量的值进行解释。

于 2021-03-15T11:53:11.017 回答