【发布时间】:2017-04-27 05:48:28
【问题描述】:
我想在 Linux 上使用 Boosts 对 C++ 中命令行标志的支持。我使用 CMake 构建应用程序,但出现错误“找不到 -lboost_program_options”。库 boost_program_options 是使用 bjam 独立构建的,这些库位于 boost 目录的 stage/lib 子目录中。
有什么作用:一种解决方案是使用 link_directories 添加 stage/lib 库,但 CMake manual 声明:
请注意,很少需要此命令。 find_package() 和 find_library() 返回的库位置是绝对路径。
所以这不应该是必要的。
我想要的工作:
使用 find_package 应该足够了,但这不起作用,这里是 CMakeLists:
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 中的错误在哪里?
提前致谢!
【问题讨论】: