jpo*_*234 5 c++ installation boost cmake
我正在针对 Boost 共享库构建并链接一个项目。现在:如何将这些库放入目标应用程序的安装目录中?我需要这个,因为应用程序将安装在没有正确 Boost 版本的容器内。
我在多种变体中尝试的是:
install(PROGRAMS ${Boost_LIBRARIES} DESTINATION install/lib)
Run Code Online (Sandbox Code Playgroud)
但是这个或我能想到的任何其他变体都没有给我实际的共享库文件名。
这是这个问题的答案的简短摘要。如需完整的成绩单,请参阅修订历史记录
接受的答案
问题中指示的代码行应该可以工作,但这取决于 CMake 如何定位 Boost 框架。
只有 Boost 框架的特定组件才有可安装的运行时库。如果您需要其中任何组件,则必须在 CMakeLists.txt 文件的 FindBoost 命令中列出这些组件。
我已经使用下面的最小 CMakeLists.txt 在 Ubuntu 18.04 上使用 CMake 3.10 和 Boost 1.65 进行了测试:
cmake_minimum_required(VERSION 3.10)
find_package(
Boost 1.65 REQUIRED
COMPONENTS filesystem system
)
install(PROGRAMS ${Boost_LIBRARIES} DESTINATION ~/install/lib)
Run Code Online (Sandbox Code Playgroud)
遵循...的标准约定:
mkdir build
cd build
ccmake ..
cmake .
make
make install
Run Code Online (Sandbox Code Playgroud)
...我成功地看到 libboost_filesystem.so 和 libboost_system.so 安装在用户主文件夹下的指定位置。