首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake链接Boost:找不到-lboost_program_options

CMake链接Boost:找不到-lboost_program_options
EN

Stack Overflow用户
提问于 2016-12-12 11:10:56
回答 1查看 1.9K关注 0票数 4

我想在Linux上使用C++中对命令行标志的增强支持。我使用CMake来构建应用程序,但是我得到了一个错误“无法找到-lboost_program_options”。库boost_program_options是使用bjam独立构建的,库位于boost目录的stage/lib子目录中。

工作的:一个解决方案是使用link_directories添加stage/lib库,但是CMake 手册声明:

注意,这个命令很少是必需的。find_package()和find_library()返回的库位置是绝对路径。

所以这不应该是必要的。

我想要的工作:

使用find_package就足够了,但这是行不通的,下面是CMakeLists:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.6)
project(inp_manipulation)
set(CMAKE_CXX_STANDARD 11)
include_directories(includes lib/boost_1_62_0 lib/)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "lib/boost_1_62_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "lib/boost_1_62_0/stage/lib")

find_package(Boost 1.62.0)
include_directories(${Boost_INCLUDE_DIR})

file(GLOB SOURCES *.cpp)
set(MAIN_FILE main.cpp)
set(SOURCE_FILES ${SOURCES})

add_executable(inp_manipulation ${MAIN_FILE} ${SOURCE_FILES} )
target_link_libraries(inp_manipulation -static-libgcc -static-libstdc++ boost_program_options)

问题

CMakeLists中的错误在哪里?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-12 11:18:50

首先,您必须告诉cmake,您需要使用boost中的特定组件库:

代码语言:javascript
复制
find_package(Boost 1.62.0 COMPONENTS program_options)

第二,始终使用来自BoostFind.cmake的输出变量

代码语言:javascript
复制
target_link_libraries(inp_manipulation -static-libgcc -static-libstdc++ ${Boost_LIBRARIES})

这里的文档:https://cmake.org/cmake/help/v3.0/module/FindBoost.html

输出变量是:

Boost_FOUND -如果找到了标头和请求库,则为真 Boost_INCLUDE_DIRS - Boost包括目录 Boost_LIBRARY_DIRS -链接Boost库的目录 要链接的Boost_LIBRARIES - Boost组件库

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41099549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档