Cmake搜索错误的文件?

时间:2016-09-13 19:35:46

标签: c++ boost cmake

我正在尝试编译我的老师给我的工具。它使用Boost库(我已经设置并设置了环境变量),Cost可以找到Boost。

然而,Cmake告诉我它找不到名为“boost_program_options”的库。 cmake的输出告诉我它只查找名为“libboost_program_options- vc110 -mt-1_61”的文件。在我的Boost目录中,我只能找到名为“libboost_program_options- vc140 -mt-1_61”的文件,这些文件都包含在D:\ local \ boost_1_61_0 \ lib64-msvc-14.0中(我设置了) BOOST_LIBRARYDIR to)。 BOOST_ROOT设置为D:\ local \ boost_1_61_0,BOOST_INCLUDEDIR设置为D:\ local \ boost_1_61_0 \ boost。那么,为什么Cmake会查找错误的文件?

我给出的Cmake文件是

project(generator)
cmake_minimum_required(VERSION 2.8)
set(Boost_USE_STATIC_LIBS   ON)
set(Boost_USE_MULTITHREADED ON)
set(BOOST_MIN_VERSION "1.55.0")
find_package(Boost COMPONENTS program_options REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
set(CMAKE_CXX_FLAGS "-lboost_program_options")

if(UNIX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++0x")
endif()

1 个答案:

答案 0 :(得分:1)

简而言之:

Visual Studio 11 的项目应该使用带有后缀-vc110的Boost库。使用库-vc140 应该使用Visual Studio 14 cmake-generator选择了MSVC的版本。

<强>说明:

搜索特定库的FindBoost.cmake脚本。 (您可以通过find_package(Boost)调用此脚本。)

Boost使用库足以区分不同目标的库。像-vc110这样的功能表示使用哪些库编译的编译器。 -vc110对应Visual Studio 11-vc140 - Visual Studio 14

在你的情况下使用 cmake-generator Visual Studio 11(可能是你的cmake安装的默认生成器)。所以Boost库应该与它的编译器兼容。这就是为什么只搜索带有-vc110后缀的库:其他库无法与此编译器链接。