【发布时间】:2019-04-23 23:30:40
【问题描述】:
在我的应用程序套件中,我从源代码构建 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 并阅读它的结尾
...但是这两种方法都显得笨拙不雅,肯定有更好的方法。
【问题讨论】:
-
"试试 'lib',如果不起作用,试试 'lib64',或者" - 我见过几个使用给定方法的项目。
标签: cmake libtiff pengwin pengwin-enterprise