编辑: 具体而言,我想包含 /usr/include/freetype 和 /mypath/include。我放AC_CHECK_HEADERS([freetype/config/ftheader.h]),它通过了,但似乎没有被添加到传递给g++ 的 -I 中。 我还尝试添加 CPPFLAGS=-I.:/usr/include/freetype:/mypath/include,但它会出问题并且会把-I写两遍,第一个是-I. 并且会忽略第二个 -I。
因为问题是关于在自动化构建文件中放置什么内容,我认为 AM_CPPFLAGS
是正确的变量,用于添加所有C/C++编译器的包含和定义。请参见 http://www.gnu.org/software/automake/manual/html_node/Program-Variables.html
示例:
AM_CPPFLAGS = -I/usr/local/custom/include/path
/mypath/include
,那么您正在为旨在在所有计算机上运行的软件包指定特定于您计算机的内容;显然这是错误的。看起来您想要的是让您的软件包(在您的计算机上构建时)在/mypath
中查找头文件。可以轻松实现此目标,而不会破坏您的软件包。至少有3种方法可以做到:
Use a config.site file. In /usr/local/share/config.site
(create this file if necessary), add the line:
CPPFLAGS="$CPPFLAGS -I/mypath/include"
Now any package using an autoconf generated configure script with the default prefix (/usr/local
) will append -I/mypath/include
to CPPFLAGS
and the headers in /mypath/include
will be found.
If you want the assignment to be made for all builds (not just those to be installed in /usr/local
), you can use this:
Put the same line specifying CPPFLAGS
in $HOME/config.site
, and set CONFIG_SITE=$HOME/config.site
in the environment of your default shell. Now, whenever you run an autoconf generated configure script, the assignments from $HOME/config.site
will be made.
Simply specify CPPFLAGS
in the environment of your default shell.
CPPFLAGS
)。 其次,它们不会将您的机器特定信息放入一个应该在所有计算机上运行的软件包中。$(CFLAGS)
和 $(CPPFLAGS)
。如果没有这样做,那么软件包维护人员就严重滥用了 automake。也许你正在查看的软件包使用手写的 Makefile.in
。 - William Pursell
./configure
是找出编译系统上的事物位置的步骤,因此也是允许编译用户告诉它头文件路径的非默认位置的步骤。 - reinierpost