【发布时间】:2020-10-08 10:38:30
【问题描述】:
我正在针对 Boost 共享库构建和链接一个项目。现在:如何将这些库放入目标应用程序的安装目录?我需要这个,因为应用程序将安装在没有正确 Boost 版本的容器中。
我在多种变体中尝试的是:
install(PROGRAMS ${Boost_LIBRARIES} DESTINATION install/lib)
但无论是这个还是我能想到的任何其他变体都没有给我实际的共享库文件名。
【问题讨论】:
-
在 Windows 中,如果问题所在,库名称是 .lib 而不是 .dll。
-
@drescherjm 不,这不是问题。问题是如何正确安装用于构建项目的 boost 运行时库。
-
我的意思是如果您需要 dll 名称,您可以使用
${Boost_LIBRARIES}获取 .dll 名称,因为您在 Windows 上。您还可以使用 BundleUtilities 收集可执行目标的 .dll 依赖项。我有时会使用这两种技术。 -
@drescherjm
${Boost_LIBRARIES}解析为导入的目标,例如 Boost::asio。这对安装没有帮助。我正在寻找的是一种获取实际文件的方法...... -
您可以遍历
${Boost_LIBRARIES}中的项目删除扩展名并添加 .dll 扩展名以获取 .dll 名称(当这些是导入库时)。您还可以检测这些是否是目标,并从循环中获取每个 dll 的完整路径。我在我的脚本中这样做。
标签: c++ installation boost cmake