在我的应用程序套件中,我从源代码构建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标准变量,所以我唯一想到的是:
...但是这两种方法看起来笨拙不雅,肯定有更好的方法。
答案 0 :(得分:0)
GNUInstallDirs模块记录了CMAKE_INSTALL_LIBDIR变量,听起来像它包含所需的值。
CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib
即使在使用find_library
定义自定义前缀时,lib
也应在默认路径搜索中根据需要搜索lib64
和CMAKE_LIBRARY_PATH
。