C++ 如何连接模块?

C++ 如何连接模块?,c++,makefile,gtk,configure,C++,Makefile,Gtk,Configure,因此,我正在尝试编写Makefile.am,它将检查构建的源代码和依赖项 配置.in AC_PREREQ([2.68]) AC_INIT([hello], [1.0], [basinbug at yahoo.com]) AC_CONFIG_SRCDIR([src/hello.cpp]) AM_INIT_AUTOMAKE AC_PROG_CXX PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.10]) AC_CONFIG_FILES([Makefile

因此,我正在尝试编写Makefile.am,它将检查构建的源代码和依赖项

配置.in

AC_PREREQ([2.68])
AC_INIT([hello], [1.0], [basinbug at yahoo.com])
AC_CONFIG_SRCDIR([src/hello.cpp])
AM_INIT_AUTOMAKE

AC_PROG_CXX

PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.10])

AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT
src/Makefile.am

bin_PROGRAMS = hello

hello_CFLAGS = $(GTK_CFLAGS)
hello_LDFLAGS = $(GTK_LIBS)

hello_SOURCES = hello.cpp
当我跑步时会发生什么

Making all in src
make[1]: Entering directory `/home/maza/123/src'
g++ -DPACKAGE_NAME=\"hello\" -DPACKAGE_TARNAME=\"hello\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"hello\ 1.0\" -DPACKAGE_BUGREPORT=\"basinbug\ at\ yahoo.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"hello\" -DVERSION=\"1.0\" -I.     -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.cpp
hello.cpp:2:21: fatal error: gtk/gtk.h: No such file or directory
compilation terminated.
make[1]: *** [hello.o] Error 1
make[1]: Leaving directory `/home/maza/123/src'
make: *** [all-recursive] Error 1

如果我要作为ACXPROFICC,它们用于编译字符串,通过ACXProjcxx不使用

< P>,您告诉AutoToo工具您的项目是用AcProGuxCxx的C++项目,但随后您设置了C标志变量HeloLog-cFLAGS。

C++的匹配变量是HeloLoCXFLAG。


也就是说,这两个都不是用于此用途的正确标志。正确的标志是。

您看到配置脚本检查GTK+并找到它了吗?这些GTK_*变量在生成的Makefile中有什么值?GTK_CFLAGS=-pthread-I/usr/include/GTK-2.0-I/usr/lib/x86_64-linux-gnu/GTK-2.0/include。。。GTK_LIBS=-lgtk-x11-2.0-lgdk-x11-2.0-latk-1.0-lgio-2.0-lpangoft2-1.0-LPANGOCARO-1.0…编译行中未使用这些。这就是问题所在。但我不知道为什么。我认为hello\u CFLAGS行可以做到这一点。如果我以AC\u PROG\u CC的身份,它们用于编译字符串,通过AC\u PROG\u CXX,它不可用。您应该使用cppfagas作为include,而不是CFLAGS或cxflags。CPP= C预处理器,它适用于C和C++,实际处理的过程包括指令。