Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ wxWidgets自动确认设置不';t集包括dirs as-I系统,但不包括as-I_C++_Autotools_Autoconf_Include Path - Fatal编程技术网

C++ wxWidgets自动确认设置不';t集包括dirs as-I系统,但不包括as-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, , ,[

我继承了一个使用autoconf和automake进行构建的构建系统。除了在高层次上,我对它的工作原理一点也不熟悉

构建系统本身运行良好。但是,许多警告是从系统头生成的。在我的例子中,wxWidgets。原因是wxWidgets的include dir作为-I传递,而不是
-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
(它是安装的一部分)发出了错误的选项。它们是警告而不是错误,这仅仅意味着缺陷没有你想象的那么严重。它们只是警告,并不意味着在不了解其本质的情况下忽视它们是安全的。