【发布时间】:2019-02-05 12:36:56
【问题描述】:
我需要打包一个链接到其他一些静态库的 C++ 库,并且我希望能够单独发送已编译的文件,而无需发送传递依赖项。为此,我关注this guide regarding modern CMake techniques,并将所有需要的依赖项指定为PRIVATE,因为它们没有在我的库的公开API 中使用。
问题在于,尽管已将依赖项指定为 PRIVATE,但链接器似乎仍未将它们包含在输出库中,因此如果我尝试将我的库链接到可执行文件,链接器会抱怨缺少符号(至少使用 MSVC)。有没有办法解决这个问题?
我已经查看了this,但我不确定如何将其集成到现有的 INSTALL 目标中
【问题讨论】:
-
所以我基本上需要编写一个自定义构建脚本,对吗?我将无法依赖 cmake-install
-
好吧,我不会称它为自定义脚本。这只是您可以在 CMake 中编写的一些直接命令。我也不认为 libs 组合是一个安装步骤。这只是另一个构建步骤,它依赖于其他库,但使用不同的命令来完成该步骤,仅此而已。
-
CPack 使用安装目标来创建包,所以我想重用它来达到目的。如果我对目标应用一些自定义命令,生成的配置文件仍然存在问题,因为它们会尝试解决传递依赖项
-
这是静态库还是动态库? PRIVATE 链接仅控制 CMake 是否在目标之间传播链接要求。它不会影响链接本身 AFAIK。
标签: c++ cmake static dependencies