首页 > 解决方案 > CMake:使用项目安装 boost 组件库的正确方法

问题描述

我正在针对 Boost 共享库构建和链接一个项目。现在:如何将这些库放入目标应用程序的安装目录?我需要这个,因为应用程序将安装在没有正确 Boost 版本的容器内。

我在多种变体中尝试的是:

install(PROGRAMS ${Boost_LIBRARIES} DESTINATION install/lib)

但无论是这个还是我能想到的任何其他变体都没有给我实际的共享库文件名。

标签: c++installationboostcmake

解决方案


这是对这个问题的答案的简要总结。如需完整成绩单,请参阅修订历史

接受的答案

问题中指示的代码行应该可以工作,但这取决于 CMake 如何定位 Boost 框架。

只有 Boost 框架的特定组件具有可安装的运行时库。如果您需要其中任何一个,您必须在 CMakeLists.txt 文件的 FindBoost 命令中列出这些组件。

我已经使用下面的最小 CMakeLists.txt 在带有 CMake 3.10 和 Boost 1.65 的 Ubuntu 18.04 上对此进行了测试:

cmake_minimum_required(VERSION 3.10)
find_package( 
 Boost 1.65 REQUIRED 
 COMPONENTS  filesystem system 
)
install(PROGRAMS ${Boost_LIBRARIES} DESTINATION ~/install/lib)

遵循...的标准约定:

mkdir build
cd build
ccmake ..
cmake .
make
make install

...我成功地看到 libboost_filesystem.so 和 libboost_system.so 安装在用户主文件夹下的指定位置。


推荐阅读