Include 为Makefile中的头添加目录
您好,我想问您,如果有人知道如何在Makefile中为头文件添加目录以避免出现错误*.h not found,我已尝试此选项,但不起作用:Include 为Makefile中的头添加目录,include,makefile,header,Include,Makefile,Header,您好,我想问您,如果有人知道如何在Makefile中为头文件添加目录以避免出现错误*.h not found,我已尝试此选项,但不起作用: INC_PATH := -I /directory/to/add 至少对于GNU make,请尝试隐式变量,如中所示: CFLAGS=-I/directory/to/add 尽管最终的目标是影响CFLAGS的价值(正如@unwind所建议的),但简单地设置CFLAGS的价值通常不是一个好主意,因为它通常由许多部分组成。您必须了解makefile的结构以及
INC_PATH := -I /directory/to/add
至少对于GNU make,请尝试隐式变量
,如中所示:
CFLAGS=-I/directory/to/add
尽管最终的目标是影响CFLAGS的价值(正如@unwind所建议的),但简单地设置CFLAGS的价值通常不是一个好主意,因为它通常由许多部分组成。您必须了解makefile的结构以及使用的宏集 [补充: 爱德华多问:你能发布宏来做同样的事情吗 是的,但它们是否有用取决于您的makefile的结构
CC = gcc -g
XFLAGS = -Wall -Wshadow -Wstrict-prototypes -Wmissing-prototypes \
-DDEBUG -Wredundant-decls
#CC = cc -g
#XFLAGS =
UFLAGS = # Always overrideable on the command line
DEPEND.mk = sqlcmd-depend.mk
INSTALL.mk = sqlcmd-install.mk
ESQLC_VERSION = `esqlcver`
OFLAGS = # -DDEBUG_MALLOC -g
OFLAGS = -g -DDEBUG -O4
PFLAGS = -DHAVE_CONFIG_H
OFILES.o = # rfnmanip.o # malloc.o # strdup.o # memmove.o
VERSION = -DESQLC_VERSION=${ESQLC_VERSION}
#INC1 = <defined in sqlcmd-depend.mk>
#INC2 = <defined in sqlcmd-depend.mk>
INC3 = /usr/gnu/include
INC4 = ${INFORMIXDIR}/incl/esql
INC5 = . #${INFORMIXDIR}/incl
INCDIRS = -I${INC3} -I${INC1} -I${INC2} -I${INC4} -I${INC5}
LIBSQLCMD = libsqlcmd.a
STRIP = #-s
LIBC = #-lc_s
LIBMALLOC = #-lefence
LIBRDLN = -lreadline
LIBCURSES = -lcurses
LIBPOSIX4 = -lposix4
LIBG = #-lg
LIBDIR1 = ${HOME}/lib
LIBDIR2 = /usr/gnu/lib
LIBJL1 = ${LIBDIR1}/libjl.a
LIBJL2 = ${LIBDIR1}/libjlss-${ESQLC_VERSION}.a
LIBTOOLS = ${LIBJL2} ${LIBJL1}
LDFLAGS = ${LIBSQLCMD} ${LIBTOOLS} -L${LIBDIR2} ${LIBG} ${LIBMALLOC} \
${LIBPOSIX4} ${LIBC} ${STRIP}
CFLAGS = ${VERSION} ${INCDIRS} ${OFLAGS} ${XFLAGS} ${PFLAGS} ${UFLAGS}
从宏对象中列出的一组对象文件链接程序的规则如下所示:
${CC} ${CFLAGS} -o $@ ${OBJECTS} ${LDFLAGS}
如您所见,ESQLC_版本(正在使用的Informix ESQL/C版本,默认情况下通过运行脚本esqlcver
派生)有可单独设置的宏,然后通过INC1到INC5和INCFLAGS(可能有很多宏,取决于平台)包含目录,以及优化器标志(OFLAGS)、额外标志(CFLAGS),用户定义的标志(UFLAGS-我在大多数makefile中使用的习惯用法;它允许用户在make
命令行上设置UFLAGS,并向构建添加额外的标志),以及一堆与库相关的宏。这就是我的开发makefile可以在对我的开发平台(可以是Linux、Solaris或MacOS X)不太麻烦的情况下进行调优的条件。对于程序的使用者,有一个由自动功能定义
生成的配置
脚本,所以他们不必担心得到这些脚本是的。然而,这与这个密码有很强的基因相似性,包括UFLAGS选项
请注意,许多用于生成文件的系统都有一种设置CFLAGS的机制,这种机制与此稍有相似——简单地分配给CFLAGS会破坏系统所做的良好工作。但您必须了解您的生成文件,以便能够合理地修改它
]对于cmake,在
${CC} ${CFLAGS} -o $@ ${OBJECTS} ${LDFLAGS}