【问题标题】:find_package of cmake cannot find boostcmake 的 find_package 找不到 boost
【发布时间】:2014-12-22 11:36:58
【问题描述】:

我参考了这个link 并用以下数据制作了一个 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()

即使我设置了 BOOST_ROOT ,它也会失败并给出 Boost Found False 消息。我在这里做错了什么?

编辑:我发现将 Boost_USE_STATIC_LIBS 设置为 OFF 可以解决问题。但我必须让它开启。这里有什么问题?

【问题讨论】:

    标签: c++ boost cmake


    【解决方案1】:

    您的目录结构需要如下所示:

    c:/boost/boost_1_55_0
    

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

    【讨论】:

      【解决方案2】:

      我找到了这段代码不起作用的原因。当我将值 ON 赋予 Boost_USE_STATIC_LIBS 时,结果是 find_package 将寻找 libboost_thread-vc100-mt- 1_55 ,它不会找到,因为构建 boost 将提供 shared 库,如link 中所述。参考下图:

      【讨论】:

        猜你喜欢
        • 2016-01-19
        • 2018-02-06
        • 1970-01-01
        • 2022-12-29
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        相关资源
        最近更新 更多