Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 将gsl作为第三方动态库提供,其中包含使用CPack生成的Debian包_Cmake_Cpack - Fatal编程技术网

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,请执行此操作。