安装C&x2B+;自制图书馆 我试图为我的项目安装一个C++库( gtkmm < /强>),并用一个简单的测试文件(从维基百科页面中的GTKMM主页)测试这个安装。 我确实brew安装了gtkmm3,但当我使用clang++-Wall-Werror-Wextra-o test test.cpp编译时,它找不到我的头: test.cpp:15:10: fatal error: 'gtkmm-3.0/gtkmm.h' file not found #include <gtkmm-3.0/gtkmm.h> test.cpp:15:10:致命错误:“未找到gtkmm-3.0/gtkmm.h”文件 #包括
标题位于安装C&x2B+;自制图书馆 我试图为我的项目安装一个C++库( gtkmm < /强>),并用一个简单的测试文件(从维基百科页面中的GTKMM主页)测试这个安装。 我确实brew安装了gtkmm3,但当我使用clang++-Wall-Werror-Wextra-o test test.cpp编译时,它找不到我的头: test.cpp:15:10: fatal error: 'gtkmm-3.0/gtkmm.h' file not found #include <gtkmm-3.0/gtkmm.h> test.cpp:15:10:致命错误:“未找到gtkmm-3.0/gtkmm.h”文件 #包括,c++,macos,homebrew,C++,Macos,Homebrew,标题位于~/homebrew/include/gtkmm-3.0/gtkmm.h。 我试过: 将$HOME”/homebrew/include“添加到$PATH并在我的源文件中使用#include 将$HOME”/homebrew/include/gtkmm-3.0“添加到我的$PATH并在我的源文件中使用#include 但我还是不能编译 我该怎么办?是的,像这样使用pkgconfig,它会告诉您所有需要的包含路径和链接路径: pkg-config --libs --cflags /usr
~/homebrew/include/gtkmm-3.0/gtkmm.h
。
我试过:
- 将
添加到$HOME”/homebrew/include“
并在我的源文件中使用$PATH
#include
- 将
添加到我的$HOME”/homebrew/include/gtkmm-3.0“
并在我的源文件中使用$PATH
#include
我该怎么办?是的,像这样使用
pkgconfig
,它会告诉您所有需要的包含路径和链接路径:
pkg-config --libs --cflags /usr/local/Cellar/gtkmm3/*/lib/pkgconfig/gdkmm-3.0.pc
输出
-D_REENTRANT -I/usr/local/Cellar/gtkmm3/3.18.0/include/gdkmm-3.0
-I/usr/local/Cellar/gtkmm3/3.18.0/lib/gdkmm-3.0/include
-I/usr/local/Cellar/glibmm/2.46.3/include/giomm-2.4
-I/usr/local/Cellar/glibmm/2.46.3/lib/giomm-2.4/include
-I/usr/local/Cellar/pangomm/2.38.1/include/pangomm-1.4
-I/usr/local/Cellar/pangomm/2.38.1/lib/pangomm-1.4/include
-I/usr/local/Cellar/glibmm/2.46.3/include/glibmm-2.4
-I/usr/local/Cellar/glibmm/2.46.3/lib/glibmm-2.4/include
-I/usr/local/Cellar/gtk+3/3.18.6/include/gtk-3.0
-I/usr/local/Cellar/glib/2.46.2/include/gio-unix-2.0/
-I/usr/local/Cellar/cairo/1.14.6/include/cairo
-I/usr/local/Cellar/libepoxy/1.3.1/include
-I/usr/local/Cellar/pango/1.38.1/include/pango-1.0
-I/usr/local/Cellar/harfbuzz/1.1.3/include/harfbuzz
-I/usr/local/Cellar/pango/1.38.1/include/pango-1.0
-I/usr/local/Cellar/atk/2.18.0/include/atk-1.0
-I/usr/local/Cellar/cairo/1.14.6/include/cairo
-I/usr/local/Cellar/cairomm/1.12.0/include/cairomm-1.0
-I/usr/local/Cellar/cairomm/1.12.0/lib/cairomm-1.0/include
-I/usr/local/Cellar/cairo/1.14.6/include/cairo
-I/usr/local/Cellar/pixman/0.32.8/include/pixman-1
-I/usr/local/Cellar/fontconfig/2.11.1/include
-I/usr/local/Cellar/freetype/2.6_1/include/freetype2
-I/usr/local/Cellar/libpng/1.6.20/include/libpng16
-I/usr/local/Cellar/libsigc++/2.6.2/include/sigc++-2.0
-I/usr/local/Cellar/libsigc++/2.6.2/lib/sigc++-2.0/include
-I/usr/local/Cellar/gdk-pixbuf/2.32.3/include/gdk-pixbuf-2.0
-I/usr/local/Cellar/libpng/1.6.20/include/libpng16
-I/usr/local/Cellar/glib/2.46.2/include/glib-2.0
-I/usr/local/Cellar/glib/2.46.2/lib/glib-2.0/include
-I/usr/local/opt/gettext/include
-L/usr/local/Cellar/gtkmm3/3.18.0/lib
-L/usr/local/Cellar/glibmm/2.46.3/lib
-L/usr/local/Cellar/pangomm/2.38.1/lib
-L/usr/local/Cellar/glibmm/2.46.3/lib
-L/usr/local/Cellar/gtk+3/3.18.6/lib
-L/usr/local/Cellar/pango/1.38.1/lib
-L/usr/local/Cellar/atk/2.18.0/lib
-L/usr/local/Cellar/cairo/1.14.6/lib
-L/usr/local/Cellar/glib/2.46.2/lib
-L/usr/local/Cellar/cairomm/1.12.0/lib
-L/usr/local/Cellar/cairo/1.14.6/lib
-L/usr/local/Cellar/libsigc++/2.6.2/lib
-L/usr/local/Cellar/gdk-pixbuf/2.32.3/lib
-L/usr/local/Cellar/glib/2.46.2/lib
-L/usr/local/opt/gettext/lib
-lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lintl
然后,您可以使用以下工具进行编译:
clang++ $(pkg-config --libs --cflags /usr/local/Cellar/gtkmm3/*/lib/pkgconfig/gdkmm-3.0.pc) someFile.cpp -o someFile
$PATH
不是编译器用来查找头文件的,而是shell用来查找您尝试运行的程序。相反,请使用编译器的-I
选项。您可能还需要使用-L
提供指向库的路径,并使用-L
告诉它链接该库。没错,现在它找到了。但是它现在找到的头本身需要另一个找不到的头。(虽然安装了依赖项),我是否必须添加-I和-L才能手动添加每个依赖项?有没有办法修改环境变量,在不添加这些选项的情况下用brew安装库进行编译?在安装时,有没有提到它们只是keg
。这意味着它们已安装但未放置在标准位置(因为自动执行此操作存在问题)。因为它们不在标准位置,编译器无法找到它们。您必须手动指示位置或查找brew链接--force
@LokiAstari安装它时什么都没有。我将查看brew链接--force
。我刚刚试过,它安装在这里:ls/usr/local/include/gdkmm-3.0/gdkmm.h
它工作起来很有魅力,谢谢!)不过我不得不添加c++11标志。