如何在cmake中使用CHECK_LIBRARY_EXISTS?
How to use CHECK_LIBRARY_EXISTS in cmake?
这是我 CMakeLists.txt 中的内容:
link_directories( "/usr/local/lib" )
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS( "libmali-midgard-t76x-r9p0-r0p0.so" "gbm_create_device" "" MALI )
结果:
Looking for gbm_create_device in libmali-midgard-t76x-r9p0-r0p0.so - not found
该符号存在于该库中:
$ nm -D /usr/local/lib/libmali-midgard-t76x-r9p0-r0p0.so | egrep gbm_create_device
001b245c T gbm_create_device
为什么 cmake 找不到?
这是依赖关系。
CHECK_LIBRARY_EXISTS
比 nm -D
复杂得多。 CMake 实际上创建了一个引用该库的 C 项目,并尝试 link 它。
我错过了该库使用的一些依赖项(libdrm-dev、libxcb-dri2-0、libx11-xcb-dev),所以 linker 失败了。
通过查看 CMakeFiles 文件夹中的内容解决,它包含更详细的日志。
这是我 CMakeLists.txt 中的内容:
link_directories( "/usr/local/lib" )
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS( "libmali-midgard-t76x-r9p0-r0p0.so" "gbm_create_device" "" MALI )
结果:
Looking for gbm_create_device in libmali-midgard-t76x-r9p0-r0p0.so - not found
该符号存在于该库中:
$ nm -D /usr/local/lib/libmali-midgard-t76x-r9p0-r0p0.so | egrep gbm_create_device
001b245c T gbm_create_device
为什么 cmake 找不到?
这是依赖关系。
CHECK_LIBRARY_EXISTS
比 nm -D
复杂得多。 CMake 实际上创建了一个引用该库的 C 项目,并尝试 link 它。
我错过了该库使用的一些依赖项(libdrm-dev、libxcb-dri2-0、libx11-xcb-dev),所以 linker 失败了。
通过查看 CMakeFiles 文件夹中的内容解决,它包含更详细的日志。