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

时间:2019-04-23 23:30:40

标签: cmake libtiff

在我的应用程序套件中,我从源代码构建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平台(用于WSL的Pengwin Enterprise),事实证明,这里CMAKE_INSTALL_FULL_LIBDIR设置为$ {CMAKE_INSTALL_PREFIX} / lib 64 。我已经检查过the CMake documentation,似乎是说实际上'lib'或'lib64'的选择是自动确定的,并且取决于平台。

因此,在我自己的应用程序的CMakeLists.txt文件中,是否有办法找出当前平台上的文件?我还应该怎么猜去哪里找图书馆?我环顾四周,但找不到包含与平台相关的字符串的CMAKE标准变量,所以我唯一想到的是:

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

...但是这两种方法看起来笨拙不雅,肯定有更好的方法。

1 个答案:

答案 0 :(得分:0)

GNUInstallDirs模块记录了CMAKE_INSTALL_LIBDIR变量,听起来像它包含所需的值。

CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib

即使在使用find_library定义自定义前缀时,lib也应在默认路径搜索中根据需要搜索lib64CMAKE_LIBRARY_PATH