如何将库添加到Eclipse CDT? (没有相应的文件和目录)

时间:2013-01-11 22:36:48

标签: c++ eclipse

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

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

包含标签中:语言 - > GNU C ++

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

当我使用Eclipse的intellisense时,它会找到我想要的东西,但是它无法构建。

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提供的接口添加目录文件那么容易。我敬畏。

此致 戴恩

5 个答案:

答案 0 :(得分:4)

  

我右键单击我的项目,然后单击属性 - &gt; C / C ++ General-&gt;路径和符号。

     

在“包含”标签中:语言 - &gt; GNU C ++

     

我点击添加... - &gt;文件系统然后添加名为boost_1_52_0的文件夹或任何其他文件夹。

     

当我使用Eclipse的intellisense时,它会找到我想要的东西,但是它无法构建。

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

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

不确定为什么会这样。

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

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

使用例如Eclipse CDT构建属性与手动管理的makefile进行通信的方法是使用例如来自上述项目属性部分的构建变量环境设置: enter image description here

答案 1 :(得分:4)

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

仅限标题库

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

完成相同的操作

静态/共享对象库

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

  1. -l - &gt;库的名称,减去'lib'前缀和文件后缀(例如,libboost_serialization.dll - &gt; boost_serialization
  2. -L - &gt;要查找库文件的目录。仅当库位于非标准路径上时才需要。
  3. 正如@Chris指出的那样,对于托管的makefile项目,可以通过Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Linker > Libraries

    设置这两个选项

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我遇到了同样的问题。更改C/C++ Build - &gt;中的设置Settings解决了这个问题。确保&#34; .lib&#34;文件扩展名被排除在外请参阅下面的屏幕截图:enter image description here

答案 4 :(得分:-3)

通过在makefile中添加-I解决。

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)