4

我在添加头库时遇到了一些问题。

我右键单击我的项目,然后单击Properties-> C/C++ General-> Paths and Symbols

包含选项卡中:语言-> GNU C++

我单击添加... -> 文件系统,然后添加名为 boost_1_52_0 的文件夹或任何其他文件夹。

当我使用 Eclipse 的智能感知时,它会找到我想要的,但是它在构建时失败了。

fatal error: boost/random/...: No such file or directory

不知道为什么会这样。

任何刚刚起步的帮助将不胜感激。

22:34:02 **** Incremental Build of configuration Default for project TestProj****
make all 
g++ -O2 -g -Wall -fmessage-length=0    -c -o TestProj.o TestProj.cpp
TestProj.cpp:5:52: fatal error: boost/random/random_number_generator.hpp: No such file     or directory
<builtin>: recipe for target `TestProj.o' failed
compilation terminated.
make: *** [TestProj.o] Error 1

显然,这并不像将文件夹添加到 eclipse 提供的接口的目录中那么容易。我敬畏。

问候, 戴恩

4

5 回答 5

4

我右键单击我的项目,然后单击属性-> C/C++ 常规-> 路径和符号。

在包含选项卡中:语言-> GNU C++

我单击添加... -> 文件系统,然后添加名为 boost_1_52_0 的文件夹或任何其他文件夹。

当我使用 Eclipse 的智能感知时,它会找到我想要的,但是它在构建时失败了。

是的,这就是您可能需要使 Eclipse CDT 智能感知和索引器与您的外部引用保持同步。

fatal error: boost/random/...: No such file or directory

不知道为什么会这样。

这是因为您对如何构建项目的设置可能会选择您自己管理构建过程: CDT C/C++ 构建属性

如果是这样,您必须让您手动管理makefile了解环境和编译器/链接器标志设置。

在这种情况下,使用 Eclipse CDT 构建属性与手动管理的 makefile 进行通信的一种方法是使用上述项目属性部分中的 构建变量环境设置:在此处输入图像描述

于 2013-01-30T21:56:14.753 回答
4

添加什么取决于您要包含的内容。在 Boost 的情况下,有许多只包含头文件的库,并且有些库需要在静态/共享对象库中进行链接(例如,序列化)。

仅标头库

对于仅头文件的库,您只需要包含所有头文件的基本目录。使用,您可以使用标志gcc添加目录(例如, )。使用 Eclipse 中的托管 makefile 项目,您可以使用-I-I C:/path/to/boost_52_0Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Compiler > Directories

静态/共享对象库

对于静态/共享对象库,您必须指定两个选项:

  1. -l--> 库的名称,减去“lib”前缀和文件后缀(例如,libboost_serialization.dll->boost_serialization
  2. -L--> 查找库文件的目录。仅当库位于非标准路径上时才需要。

正如@Chris 指出的那样,对于托管的 makefile 项目,这两个选项都可以通过Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Linker > Libraries

于 2013-01-31T20:48:39.560 回答
1

你搜索的是Properties > C/C++ Build > Settings > Tool settings > ... Linker > Libraries什么?这是从命令行编译时添加 -l 选项的地方。

于 2013-01-12T01:25:36.973 回答
1

我有同样的问题。C/C++ Build在-->中更改设置Settings解决了这个问题。确保排除了“.lib”文件扩展名!请看下面的截图:在此处输入图像描述

于 2016-10-13T06:47:53.460 回答
-4

通过将 -I 添加到 makefile 来解决。

BOOST =     C:/Users/neo/Documents/boost_1_52

CXXFLAGS =  -O2 -g -Wall -fmessage-length=0 -I$(BOOST)

OBJS =      p1.o

LIBS =      

TARGET =    p1.exe


$(TARGET):  $(OBJS)
    $(CXX) -o $(TARGET) $(OBJS) $(LIBS)

all:    $(TARGET)

clean:
    rm -f $(OBJS) $(TARGET)
于 2013-01-25T13:22:43.243 回答