Boost库使用记录
程序员文章站
2022-05-31 21:46:11
...
问题
Q: 通过cmake使用boost库的时候,报了错误如下:
CMake Warning (dev) at /usr/local/lib/cmake/Boost-1.74.0/BoostConfig.cmake:240 (if):
Policy CMP0057 is not set: Support new IN_LIST if() operator. Run "cmake
--help-policy CMP0057" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
IN_LIST will be interpreted as an operator when the policy is set to NEW.
Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):
/usr/share/cmake-3.5/Modules/FindBoost.cmake:245 (find_package)
CMakeLists.txt:10 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error at /usr/local/lib/cmake/Boost-1.74.0/BoostConfig.cmake:240 (if):
if given arguments:
"ALL" "IN_LIST" "Boost_FIND_COMPONENTS"
Unknown arguments specified
A: 由于boost最新的库需要更高的cmake 支持, 添加以下设定到CMakeLists.txt中
CMAKE_MINMUM_REQUIRED(VERSION 3.5)
要点
- 在每个boost库的文件下,都有相应的使用例程:
$ cd boost_1_74_0/libs/date_time/example $ ls gregorian Jamfile local_time posix_time tutorial
- Boost在CMakeLists.txt文件中的相关使用例程在FindBoost.cmake文件中有举例:
如果只调用boost的头文件的时候, 不用指定组件, 如果需要调用某个库的时候, 需要在find_package中指定组件, 该组件其实就是被调用的库文件的别名==(Boost libraries by their canonical name)==。164 # Example to find Boost headers only:: 165 # 166 # find_package(Boost 1.36.0) 167 # if(Boost_FOUND) 168 # include_directories(${Boost_INCLUDE_DIRS}) 169 # add_executable(foo foo.cc) 170 # endif() 171 # 172 # Example to find Boost libraries and use imported targets:: 173 # 174 # find_package(Boost 1.56 REQUIRED COMPONENTS 175 # date_time filesystem iostreams) 176 # add_executable(foo foo.cc) 177 # target_link_libraries(foo Boost::date_time Boost::filesystem 178 # Boost::iostreams) 179 # 180 # Example to find Boost headers and some *static* libraries:: 181 # 182 # set(Boost_USE_STATIC_LIBS ON) # only find static libs 183 # set(Boost_USE_MULTITHREADED ON) 184 # set(Boost_USE_STATIC_RUNTIME OFF) 185 # find_package(Boost 1.36.0 COMPONENTS date_time filesystem system ...) 186 # if(Boost_FOUND) 187 # include_directories(${Boost_INCLUDE_DIRS}) 188 # add_executable(foo foo.cc) 189 # target_link_libraries(foo ${Boost_LIBRARIES}) 190 # endif() 191 # 192 # Boost CMake
上一篇: boost库使用总结
下一篇: oracle数据库基本查询操作