cmake的find_package无法找到boost库。

3

我参考了这个链接,并创建了以下数据的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
SET(TARGET integrity_scanner)
message("\nBuilding ${TARGET}")
project (${TARGET})
if (UNIX)
    message(STATUS "Setting GCC flags")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -Wall -O0")
else()
    message(STATUS "Setting MSVC flags")
    #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc-")
endif ()

include_directories ("${PROJECT_SOURCE_DIR}")

set(Boost_USE_STATIC_LIBS       ON)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
set(BOOST_ROOT C:/boost_1_55_0_dyn)
find_package(Boost 1.55.0 COMPONENTS thread)

SET(SOURCE
  IntegrityScanner.cpp
)

SET(HEADERS
  IntegrityScanner.h ../BaseApplication.hpp 
)

if(Boost_FOUND)
    add_definitions(-DDLL_EXPORTS)
    add_definitions(-DBOOST_ALL_DYN_LINK)

    include_directories("..\\..\\..\\ext_library\\zmq\\zeromq-4.0.3\\include")
    include_directories("..\\..\\..\\ext_library\\zmq\\czmq\\czmq-2.1.0\\include")
    link_directories("..\\..\\..\\ext_library\\zmq\\zeromq-4.0.3\\lib\\Win32\\Debug")
    link_directories("..\\..\\..\\ext_library\\zmq\\czmq\\czmq-2.1.0\\lib\\Win32\\DebugDLL")

    include_directories(${Boost_INCLUDE_DIRS}) 
    LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
    add_library(${TARGET} SHARED ${SOURCE} ${HEADERS})
    target_link_libraries(${TARGET} ${Boost_LIBRARIES} czmq libzmq)
else()
    message(STATUS "Boost_FOUND False")
endif()

尽管我已经设置了< strong > BOOST_ROOT < / strong >,但它仍然失败并给出了< strong > Boost Found False < / strong >的消息。 我在这里做错了什么?
编辑:我发现将< strong > Boost_USE_STATIC_LIBS < / strong >设置为< strong > OFF < / strong >可以解决问题。 但是我必须把它设为< strong > ON < / strong >。 这里可能有什么问题?
2个回答

0

你的目录结构需要像这样:

c:/boost/boost_1_55_0

BOOST_ROOT是一个环境变量,设置为c:/boost


0

我已经找到了这段代码无法工作的原因。由于我将值ON赋给了Boost_USE_STATIC_LIBS,结果是find_package会寻找libboost_thread-vc100-mt-1_55,但它找不到,因为构建boost将提供shared库,如link所述。请参考下面的图片:

Boost default linking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接