在我的应用程序套件中,我从源代码构建 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}/lib 64。我检查了CMake 文档,似乎说实际上“lib”或“lib64”的选择是自动确定的并且与平台相关。
那么,在我自己的应用程序的 CMakeLists.txt 文件中,有没有办法找出它在我当前平台上的位置?否则我该如何猜测去哪里寻找图书馆呢?我环顾四周,但找不到保存平台相关字符串的 CMAKE 标准变量,所以我唯一能想到的是:
...但这两种方法看起来都笨拙不雅,肯定有更好的方法。