【发布时间】:2018-11-05 00:08:55
【问题描述】:
我已经使用 autotools 几年了,现在我正在为新项目学习 CMake。
这是我所拥有的:
我的第一个食谱.bb:
inherit pkgconfig cmake
...
do_install() {
install -d ${D}${datadir}/folder1/folder2
install -m 0755 ${S}/files/file.txt ${D}${datadir}/folder1/folder2
}
mysecondrecipe.bb:
...
DEPENDS = "myfirstrecipe"
...
这很好用。第二个recipe可以找到第一个recipe安装的file.txt,我看到它安装在secondrecipe sysroot中:
build/tmp/work/armv7ahf-vfp-os-linux-musleabi/mysecondrecipe/510-r0/mysecondrecipe-sysroot/usr/share/folder1/folder2/file.txt
但是我希望 CMake 安装该文件。所以当我尝试这个时:
我的第一个食谱.bb:
inherit pkgconfig cmake
...
OECMAKE_TARGET_INSTALL = "file-install"
CMakeLists.txt:
add_custom_target(file-install)
add_custom_command(TARGET file-install POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_DATADIR}/folder1/folder2
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_SOURCE_DIR}/files/file.txt
${CMAKE_INSTALL_DATADIR}/folder1/folder2/)
然后我从 mysecondrecipe.bb 收到一个构建错误,说它找不到该文件,因为它没有安装。我看到它安装在这里:
build/tmp/work/armv7ahf-vfp-os-linux-musleabi/myfirstrecipe/1.0-r0/myfirstrecipe-1.0/share/folder1/folder2/file.txt
但不在上面的路径中。任何人都可以看到我错过了什么?如果我要使用 Autotools,我可以轻松地使用它:
Automake.am:
file-install: $(shell find files/ -type f -name '*.txt')
mkdir -p ${DESTDIR}${datadir}/folder1/folder2
cp -u $^ -t ${DESTDIR}${datadir}/folder1/folder2
【问题讨论】: