4

我需要一些简单的示例,如何在 Windows 7 下的 Clion IDE 中使用 CMake 包含 boost 库/头文件
。C++ 11 需要它
。Boost 库和头文件安装在自定义目录中。
我已经为编译器安装了 cygwin x64。

一些解决方案:
我刚刚包含了 cygdrive 格式的 boost 头文件

include_directories("/cygdrive/e/Libs/BoostLibs/include/boost-1_57")

但仍然不明白 Clion 从哪里获得这些库。

更好的解决方案
需要设置 varBOOST_ROOT
所以我做了(并使用了更多变量):

set(BOOST_ROOT "/cygdrive/e/Libs/BoostLibs/include/boost-1_57")

然后可以找到并包含它

FIND_PACKAGE(Boost REQUIRED)
IF (Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()
4

3 回答 3

4

我正在使用 Boost 框架 v1.57.0 试用 JetBrains CLion EAP(构建 140.1740.3)。我通过将以下行添加到文件“CMakeLists.txt”(默认情况下与新的 CLion 项目一起提供)来使其工作。

set(BOOST_ROOT "C:\boost_1_57_0")
set(BOOSTROOT "C:\boost_1_57_0")

find_package(Boost 1.57.0)

if(NOT Boost_FOUND)
    message(FATAL_ERROR "Could not find boost!")
endif()
于 2015-01-31T20:50:02.793 回答
1

据我所知,CLion 没有得到这些库。CMake 可以。

无论如何,我能够使用以下方法解决您的问题:

set(Boost_Path "e:/Libs/BoostLibs/include")
set(Boost_INCLUDE_DIR "${Boost_Path}/boost_1_57_0")
find_package(Boost 1.57.0)

试试看,看看它是否有效,你可以使用这个:

message("Boost_INCLUDE_DIR: " ${Boost_INCLUDE_DIR })

或者

if(Boost_FOUND)
    message(STATUS "It works!")
    include_directories(${Boost_INCLUDE_DIRS})
endif()

使用第一个您将知道是否Boost_INCLUDE_DIR设置正确,而使用第二个您将仅在找到 Boost Library 并且您将包含该目录时看到该消息。

让我知道它是否不能解决您的问题。

于 2015-01-24T00:07:04.303 回答
-3

尽管我很喜欢 CLion,但 IMO 最好使用Visual Studio 2013 社区版在 Windows 上进行开发。让 Windows 成为 Windows,让 Unix 成为 Unix。试图打败一个成为另一个会产生比它解决的更多的问题。

于 2015-04-14T18:14:14.867 回答