在我的应用程序套件中,我从源代码构建Libtiff,然后将它链接到我自己编写的应用程序。Libtiff的CMakeLists.txt文件指定静态库进入由CMake的GNUInstallDirs选项确定的库位置CMAKE_INSTALL_FULL_LIBDIR。
当我第一次构建和测试我的应用程序时,我是在Debian中这样做的,在这个平台上,CMAKE_INSTALL_FULL_LIBDIR被设置为${CMAKE_INSTALL_PREFIX}/lib。好的,好的,所以在我自己的应用程序的CMakeLists.txt文件中,我告诉它搜索那里的静态tiff库。没问题..。
现在,我已经将相同的构建套件带到了Red平台(Pengwin ),而这里的${CMAKE_INSTALL_PREFIX}/lib64.被设置为CMAKE_INSTALL_FULL_LIBDIR。我检查了CMake文档,它似乎说,实际上“lib”或“lib64”的选择是自动确定的,并且与平台有关。
那么,在我自己的应用程序的CMakeLists.txt文件中,有没有一种方法可以找出它在我当前的平台上呢?不然我该怎么猜去哪儿找图书馆?我已经查看过了,但是找不到一个包含平台相关字符串的CMAKE标准变量,所以我唯一能想到的事情是:
...but这两种方法都显得笨重不雅,而且肯定有更好的方法。
发布于 2019-04-24 12:32:06
GNUInstallDirs模块记录CMAKE_INSTALL_LIBDIR变量,听起来它包含您想要的值。
CMAKE_INSTALL_LIBDIR = lib
CMAKE_INSTALL_FULL_LIBDIR = /lib
此外,find_library
还应该在默认路径搜索中根据需要搜索lib
和lib64
,即使在使用CMAKE_LIBRARY_PATH
定义自定义前缀时也是如此。
https://stackoverflow.com/questions/55820716
复制相似问题