C++ 使用CMake链接Boost库的静态版本

C++ 使用CMake链接Boost库的静态版本,c++,boost,cmake,C++,Boost,Cmake,我在/usr/lib中有boost库的静态和动态版本。现在,我希望CMake在链接可执行文件时更喜欢静态版本。我能做什么?在您的CMakeLists.txt文件中: set(Boost_USE_STATIC_LIBS ON) find_package(Boost REQUIRED ...) 在我有…的地方,您可以选择放置要使用的库的名称,然后在下面的target\u link\u库(targetname${Boost\u libraries})。如果你有一个相当新的发行版的CMake,它应

我在/usr/lib中有boost库的静态和动态版本。现在,我希望CMake在链接可执行文件时更喜欢静态版本。我能做什么?

在您的
CMakeLists.txt
文件中:

set(Boost_USE_STATIC_LIBS   ON)
find_package(Boost REQUIRED ...)

在我有
的地方,您可以选择放置要使用的库的名称,然后在下面的
target\u link\u库(targetname${Boost\u libraries})
。如果你有一个相当新的发行版的CMake,它应该工作完全一样的广告。我在自己的项目中就是这样做的。

这里有一个完整的CMAKEFILE示例,例如,包含boost程序选项

cmake_minimum_required(VERSION 3.15)
project(your_project)
set(Boost_USE_STATIC_LIBS   ON)
find_package(Boost 1.70 COMPONENTS program_options REQUIRED)
set(CMAKE_CXX_STANDARD 14)   
add_executable(your_project main.cpp)
target_link_libraries(rconpp Boost::program_options)
参考资料:


我试过了。似乎只是为了寻找。如果你想进行静态链接,你还需要做一些额外的工作。@Peter Lee:我这里有
你可以选择放置你想要使用的库的名称,然后在下面的后面
目标链接库(targetname${Boost\u libraries})
。如果你有一个相当新的发行版的CMake,它应该工作完全一样的广告。我在自己的项目中就是这样做的。通过查看
FindBoost.cmake
文件可以发现这一点。有一些评论解释了这一点。对我来说,
FindBoost.cmake
可以在
/usr/share/cmake-3.10/Modules
下找到。