C++ wxWidgets自动确认设置不';t集包括dirs as-I系统,但不包括as-I
我继承了一个使用autoconf和automake进行构建的构建系统。除了在高层次上,我对它的工作原理一点也不熟悉 构建系统本身运行良好。但是,许多警告是从系统头生成的。在我的例子中,wxWidgets。原因是wxWidgets的include dir作为-I传递,而不是C++ wxWidgets自动确认设置不';t集包括dirs as-I系统,但不包括as-I,c++,autotools,autoconf,include-path,C++,Autotools,Autoconf,Include Path,我继承了一个使用autoconf和automake进行构建的构建系统。除了在高层次上,我对它的工作原理一点也不熟悉 构建系统本身运行良好。但是,许多警告是从系统头生成的。在我的例子中,wxWidgets。原因是wxWidgets的include dir作为-I传递,而不是-issystem。我已经在网上搜索过了,但我找不到如何改变这一点 以下代码位于configure.ac文件中: AM_OPTIONS_WXCONFIG AM_PATH_WXCONFIG(3.0.2, wxWin=1, , ,[
-issystem
。我已经在网上搜索过了,但我找不到如何改变这一点
以下代码位于configure.ac
文件中:
AM_OPTIONS_WXCONFIG
AM_PATH_WXCONFIG(3.0.2, wxWin=1, , ,[--debug=yes])
if test "$wxWin" != 1; then
AC_MSG_ERROR([
wxWidgets must be installed on your system
but no wx-config script could be found.
Please check that wx-config is in path, the directory
where wxWidgets libraries are installed as returned by
'wx-config --libs' is in the linker path (LD_LIBRARY_PATH
or equivalent variable) and wxWidgets version is 2.9.4 or
above.
])
fi
if test "$wxWin" != 0; then
AC_DEFINE(HAVE_WXWIDGETS,1,[define if the wxWidgets 3.0.2. or higher is available])
fi
然后有一个Makefile.am
,它执行以下操作:
bin_PROGRAMS = project
project_SOURCES = {sources here}
project_CPPFLAGS = $(AM_CPPFLAGS) $(PROJECT_CPPFLAGS) $(WX_CPPFLAGS)
project_CFLAGS = $(AM_CFLAGS) $(PROJECT_CFLAGS) $(WX_CFLAGS)
project_CXXFLAGS = $(AM_CXXFLAGS) $(PROJECT_CXXFLAGS) $(WX_CXXFLAGS)
project_LDFLAGS = $(AM_LDFLAGS)
project_LDADD = $(AM_LIBADD) $(WX_LIBS)
似乎没有一个选项可以以某种方式将其指定为系统头
你们中有谁知道我该如何解决这个问题吗?这个问题与autoconf无关。罪魁祸首是
wx-config
工具。该工具用于获取包含目录。例如,调用wx config--cxxflag
将导致以下结果:
-I/usr/lib/wx/include/gtk2-unicode-3.1 -I/usr/include/wx-3.1 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread
它被传递给编译器。有几种方法可以解决这个问题。在输出或补丁wx配置中手动替换它。您的意思是“-isystem”(带小写字母“i”)吗?这一点是由GCC提供的,至少,尽管它的使用并不常见。@ JordBulner-Yes——ISSyMeMe您应该考虑使用默认选项时生成的特定警告。您的wxWidgets安装在任何方面都有缺陷,但不清楚缺陷是否存在于
wx config
中,而不是反映头本身的真实缺陷、缺少或不正确的依赖项等。@JohnBollinger这些是警告而不是错误。很多都是由于标志-Wconversion
。不确定我的安装有何缺陷,因为标题实际上包含警告的代码。wx配置似乎有更多的缺陷,它实际上通知编译器wx头是项目的一部分,但事实并非如此。我认为,如果编译器对这些头的问题发出警告,可能头本身实际上有缺陷。使用-isystem
会抑制警告,但这并不一定意味着生成的代码是正确的。@TomTromey我现在不会开始维护wxwidgets。这是一种外部依赖。我真的不在乎我的外部依赖项是否没有达到我自己代码的质量标准。@CryptoNoob,你的安装有缺陷,要么是因为标题引起了编译器的警告,要么是因为wx config
(它是安装的一部分)发出了错误的选项。它们是警告而不是错误,这仅仅意味着缺陷没有你想象的那么严重。它们只是警告,并不意味着在不了解其本质的情况下忽视它们是安全的。