You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Qt6 CMake Yocto配方添加do_deploy任务并确定二进制源路径

解决Yocto中Qt6应用do_deploy任务的二进制文件路径问题

你现有基于meta-qt6的qt6-cmake配方可正常构建并安装Qt应用到目标rootfs,现在需要扩展配方添加do_deploy任务,将应用二进制文件输出到部署目录,核心是确定二进制文件的来源路径,以下是两种可靠的方案:

方案1:从临时安装目录获取(推荐)

Yocto构建过程中,所有要打包进rootfs的文件会先被安装到${D}(临时安装目录),do_package任务就是基于这个目录的内容打包。因为你设置了add_task deploy after do_package,此时${D}中已经有完整的安装文件。

如果你的CMakeLists.txt中指定了安装路径为bin目录(比如install(TARGETS foo DESTINATION bin)),那么应用二进制的路径为${D}${bindir}/foo,其中${bindir}是Yocto内置变量,默认值为usr/bin。

修改后的完整配方示例:

inherit qt6-cmake deploy

SRC_URI += "<SNIP>"

DEPENDS += "\
    <SNIP> \
"

RDEPENDS:${PN} += "<SNIP>"

S = "${WORKDIR}/git"

do_deploy() {
    install -d ${DEPLOYDIR}
    install -m 0755 ${D}${bindir}/foo ${DEPLOYDIR}/foo
}

add_task deploy after do_package

如果你的应用安装到了自定义目录(比如直接在/bin而非/usr/bin),可以直接写死路径:${D}/bin/foo。

方案2:从构建目录直接获取

如果想跳过安装步骤,直接从CMake构建目录拿二进制文件,路径为${B}(Yocto的构建目录,对应${WORKDIR}/build)。具体位置取决于你的CMake配置:

  • 若未设置CMAKE_RUNTIME_OUTPUT_DIRECTORY,二进制通常直接生成在${B}/foo
  • 若设置了输出目录,比如set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin),则路径为${B}/bin/foo

这种方式适合在do_package之前执行deploy任务,但需要确保构建完成后二进制文件已生成。

内容的提问来源于stack exchange,提问作者shakta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:43:32