如何预测CMake在给定平台上选择LIBDIR
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何预测CMake在给定平台上选择LIBDIR相关的知识,希望对你有一定的参考价值。
在我的应用程序套件中,我从源代码构建Libtiff,然后将其链接到我自己编写的应用程序。 Libtiff的CMakeLists.txt文件指定静态库进入库位置CMAKE_INSTALL_FULL_LIBDIR,由CMake的GNUInstallDirs选项确定。
当我第一次构建并测试我的应用程序时,我在Debian中这样做了,在这个平台上,CMAKE_INSTALL_FULL_LIBDIR被设置为$ {CMAKE_INSTALL_PREFIX} / lib。好又好,所以在我自己的应用程序的CMakeLists.txt文件中,我告诉它在那里搜索静态tiff库。没问题...
现在我将相同的构建套件用于Red Hat Linux平台(Pengwin Enterprise for WSL),结果发现这里CMAKE_INSTALL_FULL_LIBDIR设置为$ {CMAKE_INSTALL_PREFIX} / lib64。我检查了the CMake documentation,它似乎说实际上'lib'或'lib64'的选择是自动确定的,并且是平台相关的。
那么,在我自己的应用程序的CMakeLists.txt文件中,有没有办法找出它在我当前的平台上的位置?我怎么猜猜在哪里寻找图书馆?我看了一下但是我找不到一个CMAKE标准变量来保存与平台相关的字符串,所以我能想到的唯一的事情是:
- 尝试'lib',如果不起作用,请尝试'lib64'或
- 在我自己的CMakeLists.txt文件中创建一个新的CMAKE_INSTALL_FULL_LIBDIR并读取它的结尾
......但是这些看起来都很笨拙,而且肯定必须有更好的方法。
GNUInstallDirs模块记录了CMAKE_INSTALL_LIBDIR变量,该变量听起来像包含您想要的值。
CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib
find_library
也应该在默认路径搜索中搜索lib
和lib64
,即使使用CMAKE_LIBRARY_PATH
定义自定义前缀也是如此。
以上是关于如何预测CMake在给定平台上选择LIBDIR的主要内容,如果未能解决你的问题,请参考以下文章
如何告诉 CMake(通过 externalNativeBuild 调用)在哪里寻找库?