Cmake 将gsl作为第三方动态库提供,其中包含使用CPack生成的Debian包
我有一个依赖于Cmake 将gsl作为第三方动态库提供,其中包含使用CPack生成的Debian包,cmake,cpack,Cmake,Cpack,我有一个依赖于gsl>=2.3的CMake项目,我想在ubuntu/xenial上发布一个debian包。由于gsl>2.3不是ubuntu/xenial附带的版本,因此在这种情况下,我不能使用CPACK\u DEBIAN\u PACKAGE\u SHLIBDEPS变量将gsl设置为我的包的依赖项。因此,我想用我的debian软件包发布我自己构建的libgsl和libgslcblas动态库。我尝试了以下方法 find_package(GSL 2.3 REQUIRED) --> this r
gsl>=2.3
的CMake项目,我想在ubuntu/xenial
上发布一个debian包。由于gsl>2.3
不是ubuntu/xenial
附带的版本,因此在这种情况下,我不能使用CPACK\u DEBIAN\u PACKAGE\u SHLIBDEPS
变量将gsl
设置为我的包的依赖项。因此,我想用我的debian软件包发布我自己构建的libgsl
和libgslcblas
动态库。我尝试了以下方法
find_package(GSL 2.3 REQUIRED) --> this return the ${GSL_LIBRARIES} variable
...
install(FILES ${GSL_LIBRARIES} DESTINATION ${DEBIAN_INSTALL_DIR}lib COMPONENT LIB)
但由于
GSL_库
返回指向目标库的链接,因此它安装了链接,而不是库。您知道如何继续吗?“我尝试使用CMake安装(文件…
命令,但它安装了指向实际库的链接,而不是库本身。”-可能,指向库的链接就是您实际传递给安装
命令的链接。是的,确实如此,这就是我遇到的问题所在,只需将实际的库文件传递给安装(文件)
命令,而不是指向它的链接。这有什么问题吗?${GSL\u LIBRARIES}
变量由find\u包(需要GSL 2.3)
调用返回,我用来为install
命令提供信息,返回链接路径,而不是实际的目标库系统,find\u包()
用于(链接)库,不是为了安装它。要正确安装3d party lbrary,您需要使用库本身的安装程序。手动安装3d party的整个尝试都不是正确的方法。然而,编程中有很多东西不是为了工作,而是需要的。如果您需要在没有3d party library安装程序的情况下安装3d party library,请执行此操作。