在我的应用程序套件中,我从源代码构建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标准变量来保存与平台相关的字符串,所以我能想到的唯一的事情是:
......但是这些看起来都很笨拙,而且肯定必须有更好的方法。
GNUInstallDirs模块记录了CMAKE_INSTALL_LIBDIR变量,该变量听起来像包含您想要的值。
CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib
find_library
也应该在默认路径搜索中搜索lib
和lib64
,即使使用CMAKE_LIBRARY_PATH
定义自定义前缀也是如此。