Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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++ 自动工具包括_C++_C_Makefile_Autotools - Fatal编程技术网

C++ 自动工具包括

C++ 自动工具包括,c++,c,makefile,autotools,C++,C,Makefile,Autotools,我有一个包含头的C文件。此标头位于不同的位置,具体取决于生成计算机正在运行的Linux发行版 使用自动工具在不同位置检测收割台最干净的方法是什么?使用标准宏 它将为头创建正确的预处理器定义 例如: AC_CHECK_HEADERS([somepath/foo.h someotherpath/foo.h]) 将创建预处理器定义HAVE_SOMEPATH_FOO_H或HAVE_SOMEOTHERPATH_FOO_H,具体取决于找到的标头。或者如果找到两个标头,则两者都可以。使用这些宏决定要包含的标

我有一个包含头的C文件。此标头位于不同的位置,具体取决于生成计算机正在运行的Linux发行版

使用自动工具在不同位置检测收割台最干净的方法是什么?

使用标准宏

它将为头创建正确的预处理器定义

例如:

AC_CHECK_HEADERS([somepath/foo.h someotherpath/foo.h])
将创建预处理器定义
HAVE_SOMEPATH_FOO_H
HAVE_SOMEOTHERPATH_FOO_H
,具体取决于找到的标头。或者如果找到两个标头,则两者都可以。使用这些宏决定要包含的标题。

使用标准宏

它将为头创建正确的预处理器定义

例如:

AC_CHECK_HEADERS([somepath/foo.h someotherpath/foo.h])

将创建预处理器定义
HAVE_SOMEPATH_FOO_H
HAVE_SOMEOTHERPATH_FOO_H
,具体取决于找到的标头。或者如果找到两个标头,则两者都可以。使用这些宏来决定包含哪个标题。

维护人员不必担心这些事情。将设置任何合理构造的分发,以便预处理器可以在系统上安装头文件(而不是用户的$HOME或其他非标准位置)时在其所在的任何位置找到头文件。设置工具链以查找安装在非标准位置的标题是一项特定于平台的任务,在Linux中通过设置
CPPFLAGS
最容易完成。例如,用户可能会运行

./configure CPPFLAGS=-I/p/a/t/h
(配置使用较旧版本的autoconf生成的脚本可能需要调用
cppfaglass=-I/p/a/t/h./configure
),或者她可以将
/p/a/t/h
添加到
CPATH
,或者使用任何其他可用方法通知预处理器在哪里查找包含文件。作为维护人员,您所需要做的就是确保配置脚本检查用户是否正确设置了工具链,您可以通过在
configure.AC
中调用
AC\u CHECK\u HEADERS
来执行此操作:

AC_CHECK_HEADERS([foo.h])

维护人员没有责任担心这些事情。将设置任何合理构造的分发,以便预处理器可以在系统上安装头文件(而不是用户的$HOME或其他非标准位置)时在其所在的任何位置找到头文件。设置工具链以查找安装在非标准位置的标题是一项特定于平台的任务,在Linux中通过设置
CPPFLAGS
最容易完成。例如,用户可能会运行

./configure CPPFLAGS=-I/p/a/t/h
(配置使用较旧版本的autoconf生成的脚本可能需要调用
cppfaglass=-I/p/a/t/h./configure
),或者她可以将
/p/a/t/h
添加到
CPATH
,或者使用任何其他可用方法通知预处理器在哪里查找包含文件。作为维护人员,您所需要做的就是确保配置脚本检查用户是否正确设置了工具链,您可以通过在
configure.AC
中调用
AC\u CHECK\u HEADERS
来执行此操作:

AC_CHECK_HEADERS([foo.h])

不项目的维护者(编写configure.ac的人)不应该检查不同的路径!正确的用法只是
AC\u CHECK\u HEADERS([foo.h])
,用户可以适当地设置
CPPFLAGS
,或者设置工具链以查找标题。这不是项目维护者的问题,而是用户的问题。请考虑用户在<代码> > TMP/Foo/包含< /代码>中安装了“代码> fo.h <代码>的用例:保持器不能合理地在COMPUAL.AC中放置代码> /TMP/Foo/Copy/Foo.h < /C>。不项目的维护者(编写configure.ac的人)不应该检查不同的路径!正确的用法只是
AC\u CHECK\u HEADERS([foo.h])
,用户可以适当地设置
CPPFLAGS
,或者设置工具链以查找标题。这不是项目维护者的问题,而是用户的问题。请考虑用户在<代码> > TMP/Foo/包含< /代码>中安装了“代码> fo.h <代码>的用例:保持器不能合理地在COMPUAL.AC中放置代码> /TMP/Foo/Copy/Foo.h < /C>。