CMake结合BitBake(Yocto)指定目录安装问题求助
解决Yocto中CMake安装路径的问题
方案1:配置阶段修改CMake安装前缀
如果你的配方继承了cmake.bbclass,直接在.bb文件中添加以下配置,修改CMake的默认安装前缀为根目录/:
EXTRA_OECMAKE += "-DCMAKE_INSTALL_PREFIX=/"
这样CMakeLists.txt里的install(TARGETS "${PROJECT_NAME}" RUNTIME DESTINATION my/specific/directory)会将程序安装到${D}/my/specific/directory(Yocto临时安装目录),最终镜像中对应路径就是/my/specific/directory,无需重写do_install任务。
方案2:在do_install中使用cmake --install指定前缀
如果需要手动控制安装步骤,直接重写do_install任务,调用cmake --install并指定目标前缀:
do_install() { # 将程序安装到Yocto临时目录对应的/my/specific/directory路径 cmake --install . --prefix ${D}/ }
这里${D}是Yocto的临时安装目录,--prefix ${D}/会让CMake把文件放到${D}/my/specific/directory,最终镜像中自动映射为/my/specific/directory。
方案3:通过DESTDIR环境变量调整
重写do_install时设置DESTDIR,同时指定CMAKE_INSTALL_PREFIX为根目录:
do_install() { export DESTDIR=${D} oe_runmake install CMAKE_INSTALL_PREFIX=/ }
或者直接用cmake命令:
do_install() { cmake --install . --prefix / --destdir ${D} }
这种方式和方案1效果一致,通过DESTDIR指定临时安装根目录,CMAKE_INSTALL_PREFIX控制最终镜像中的路径前缀。
注意:如果你的配方已经继承了cmake.bbclass,方案1是最简洁的,无需修改安装任务逻辑;如果需要自定义安装流程,方案2或3更灵活。
内容的提问来源于stack exchange,提问作者RScAut
相关产品推荐
相关产品推荐

