Я использую автоинструмент в течение нескольких лет, и сейчас я изучаю CMake для новых проектов.
Вот что у меня есть:
myfirstrecipe.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"
...
Это отлично работает.Второй рецепт может найти файл file.txt, установленный по первому рецепту, который, как я вижу, установлен в sysroot второго рецепта:
build/tmp/work/armv7ahf-vfp-os-linux-musleabi/mysecondrecipe/510-r0/mysecondrecipe-sysroot/usr/share/folder1/folder2/file.txt
Однако я хочу, чтобы вместо этого CMake установил файл.Поэтому, когда я пытаюсь это сделать:
myfirstrecipe.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