У меня есть хост x86_64, который выполняет кросс-компиляцию в arm- linux -gnueabihf, а CMake не может найти zlib.
Вот моя цепочка инструментов:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_C_COMPILER $ENV{HOME}/dev/sandbox/rpi/raspbian/toolchain/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/dev/sandbox/rpi/raspbian/toolchain/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/dev/sandbox/rpi/raspbian/rootfs)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
И вот вывод cmake -DCMAKE_TOOLCHAIN_FILE=$HOME/dev/sandbox/rpi/raspbian/test2.cmake .. --debug-find
:
CMake Debug Log at /usr/share/cmake-3.17/Modules/FindZLIB.cmake:81 (find_library):
find_library called with the following settings:
VAR: ZLIB_LIBRARY_RELEASE
NAMES: "z"
"zlib"
"zdll"
"zlib1"
"zlibstatic"
Documentation: Path to a library.
Framework
Only Search Frameworks: 0
Search Frameworks Last: 0
Search Frameworks First: 0
AppBundle
Only Search AppBundle: 0
Search AppBundle Last: 0
Search AppBundle First: 0
CMAKE_FIND_USE_CMAKE_PATH: 1
CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1
find_library considered the following locations:
...
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)z(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlib(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zdll(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlib1(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlibstatic(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)z(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zlib(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zdll(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zlib1(\.so|\.a)
...
The item was not found.
...
CMake Error at /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11")
...
Журнал усечен для ясности, но он не может найти ни выпускную, ни отладочную версии этого пакета, а также заголовки. Интересно, что он думает, что что-то находит и это правильная версия пакета.
Проблема в том, что пока он ищет мои целевые rootfs, фактические библиотеки существуют в / lib / arm- linux -gnueabihf / а не / lib. Когда я запускаю cmake без привязки инструментов к цели, все работает настолько явно, что что-то не установлено правильно.
Есть какие-нибудь советы?