如何在cmake中使用CHECK_LIBRARY_EXISTS?

如何在cmake中使用CHECK_LIBRARY_EXISTS?

问题描述:

下面是我在我的CMakeLists.txt:如何在cmake中使用CHECK_LIBRARY_EXISTS?

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_EXISTSnm -D复杂得多。 CMake实际上创建了一个引用该库的C项目,并试图链接它。

我错过了该库使用的一些依赖项(libdrm-dev,libxcb-dri2-0,libx11-xcb-dev),所以链接器失败。

通过查看CMakeFiles文件夹中的内容来解决它,它包含更详细的日志。