2011-11-20 93 views
3

我使用gtkmm在C++中编写Eclipse CDT。我已设法设置Eclipse,以便通过将pkg-config gtkmm-3.0 --cflags --libs添加到编译器选项来正确编译代码。所以它运行,并工作。但在编辑器中,一切与红色相关的gtk相关,当我将鼠标悬停在这些部分上时,它会显示如下内容:Type 'Gtk::Main' could not be resolved。所以我可以像这样编写代码,但是在autocompletion不工作并且屏幕上出现红线的情况下真的很痛苦。我该如何解决这个问题?Eclipse CDT&gtkmm:“... could not be resolved。”,但编译并运行

我的代码看起来是这样的:

#include <gtkmm-3.0/gtkmm.h> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(true); 

    Gtk::Box* box = new Gtk::Box(); 

    ... 

不过,我不认为这是相关的代码。因为它在Code :: Blocks中可以正常工作,代码完成和所有。但是我比Eclipse更喜欢C :: B。

//丹尼尔

回答

3

选择项目 - >属性从菜单中打开属性窗口。然后在左边的选择器中,转到C/C++通用路径和符号。您将看到包含目录的列表。看看pkg-config --cflags gtkmm-3.0的输出,并确保所有提到的目录也在这个列表中。

请注意,这些是Eclipse语法检查程序查找包含文件的路径。你的代码编译得很好,因为编译器正在以它应该的方式找到这些文件。

+0

非常感谢!它似乎完美地工作。但是,有没有简单快捷的方法来添加它们?我是否必须对所有gtkmm项目重复此操作? –

+0

对不起,我还没有找到更好的方法自动或轻松地完成它。 – ptomato

+0

您可以像回答中建议的那样展开'pkg-config --cflags gtkmm-3.0',并在eclipse的XML项目文件中手动添加输出。使用矩形选择('Shift + Alt + A'启用),它可以做得非常快。 – BobMorane

2

正如ptomato所说,路径必须配置。一个非常简单的方法是使用pkg-conf插件。 安装完成后,您只需在configuration中选择gtkmm-3.0即可。 其余部分将由插件完成。 希望这张照片有所帮助。 请注意:截图显示了conf。为GTK-2.0。你需要GTKMM-3.0。