如何预测CMake在给定平台上选择LIBDIR

问题描述 投票:-1回答:1

在我的应用程序套件中,我从源代码构建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标准变量来保存与平台相关的字符串,所以我能想到的唯一的事情是:

  1. 尝试'lib',如果不起作用,请尝试'lib64'或
  2. 在我自己的CMakeLists.txt文件中创建一个新的CMAKE_INSTALL_FULL_LIBDIR并读取它的结尾

......但是这些看起来都很笨拙,而且肯定必须有更好的方法。

cmake libtiff
1个回答
0
投票

GNUInstallDirs模块记录了CMAKE_INSTALL_LIBDIR变量,该变量听起来像包含您想要的值。

CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib

find_library也应该在默认路径搜索中搜索liblib64,即使使用CMAKE_LIBRARY_PATH定义自定义前缀也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.