I’m cross-compiling an Android executable which need a dynamic library named libplate_recognizer.so
using Visual Studio on Win11, and I’m trying to use find_library
to find the library:
...
find_library(tttt
NAMES plate_recognizer plate_recognizerd libplate_recognizer.so plate_recognizer.so
PATHS D:/qidi/plate-recognition/out/build/android-Release/plate_recognizer
NO_CACHE
)
message(${tttt})
...
I’m sure the libplate_recognizer.so
is under the directory I specified above, but CMake cannot find it.
By the way I’ve tried use different NAMES
like plate_recognizer
but neither of them works.
ben.boeckel
(Ben Boeckel (Kitware))
August 7, 2023, 11:35am
2
Does cmake --debug-find
help provide any context here?
Thanks for your help. I enabled CMAKE_FIND_DEBUG_MODE
and got such log (I’v omitted some unrelated log) :
1> [CMake] -- ANDROID_PLATFORM not set. Defaulting to minimum supported version
1> [CMake] 19.
1> [CMake] tttt-NOTFOUND
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library(tttt) removed original suffix
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib/arm-linux-androideabi/
1> [CMake] from PATH_SUFFIXES while adding architecture paths for suffix '32'
1> [CMake]
1> [CMake]
1> [CMake]
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library(tttt) removed original suffix
1> [CMake] D:/android-ndk-r25c/qidi/plate-recognition/out/build/android-Release/lib/arm-linux-androideabi/
1> [CMake] from PATH_SUFFIXES while adding architecture paths for suffix '32'
1> [CMake]
1> [CMake]
...
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library(tttt) removed original suffix
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/qidi/plate-recognition/out/build/android-Release/%SystemRoot%/System32/Wbem/lib/arm-linux-androideabi/
1> [CMake] from PATH_SUFFIXES while adding architecture paths for suffix '32'
1> [CMake]
1> [CMake]
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library(tttt) removed original suffix
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/qidi/plate-recognition/out/build/android-Release/%SystemRoot%/System32/Wbem/lib/
1> [CMake] from PATH_SUFFIXES while adding architecture paths for suffix '32'
1> [CMake]
1> [CMake]
1> [CMake]
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library(tttt) removed original suffix
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/qidi/plate-recognition/out/build/android-Release/plate_recognizer/
1> [CMake] from PATH_SUFFIXES while adding architecture paths for suffix '32'
1> [CMake]
1> [CMake]
1> [CMake] CMake Debug Log at demo/pg_demo/CMakeLists.txt:26 (find_library):
1> [CMake] find_library called with the following settings:
1> [CMake]
1> [CMake] VAR: tttt
1> [CMake] NAMES: "plate_recognizer"
1> [CMake] "plate_recognizerd"
1> [CMake] "libplate_recognizer.so"
1> [CMake] "plate_recognizer.so"
1> [CMake] Documentation: Path to a library.
1> [CMake] Framework
1> [CMake] Only Search Frameworks: 0
1> [CMake] Search Frameworks Last: 0
1> [CMake] Search Frameworks First: 0
1> [CMake] AppBundle
1> [CMake] Only Search AppBundle: 0
1> [CMake] Search AppBundle Last: 0
1> [CMake] Search AppBundle First: 0
1> [CMake] CMAKE_FIND_USE_CMAKE_PATH: 1
1> [CMake] CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
1> [CMake] CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
1> [CMake] CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1
1> [CMake]
1> [CMake] find_library considered the following locations:
1> [CMake]
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/(lib)plate_recognizer(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/(lib)plate_recognizerd(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr//(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/(lib)libplate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/lib/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/19/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/32/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr//(lib)plate_recognizer.so(\.so|\.a)
1> [CMake] D:/android-ndk-r25c/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/(lib)plate_recognizer.so(\.so|\.a)
1> [CMake]
1> [CMake] The item was not found.
Seems cmake doesn’t search D:/qidi/
that I’ve hinted but always D:/android-ndk-r25c/qidi/
, anyway to prevent that?
ben.boeckel
(Ben Boeckel (Kitware))
August 7, 2023, 2:06pm
4
Cross-compiling introduces some weird search behaviors. I wonder if the CMAKE_FIND_*
control variables are interfering. Though I thought find debugging mentioned when those were taking effect as well (@robert.maynard ?). Does anything improve if you say HINTS
instead of PATHS
?
No. HINTS
works the same with PATHS
.
Solved by set(CMAKE_FIND_ROOT_PATH "D:/")
(Originaly is D:/android-ndk-r25c
which may causes the weird search path).