makefile中怎样指定include头文件的路径??

cd7809 2003-02-17 11:28:28

我在程序中用到#include <xxx.h>, 但我不知道在makefile中怎样指定xxx.h所在的路径, 哪位知道请指点指点, 非常感谢!!
...全文
11875 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouzhaohan 2003-02-17
  • 打赏
  • 举报
回复
是不是用了-nostdinc?
operaphantom 2003-02-17
  • 打赏
  • 举报
回复
举个例子:
#定义一个宏TGT_DIR
TGT_DIR=$(WIND_BASE)/target
#
include $(TGT_DIR)/src/tms/mkdefs


LIBNAME=lib$(CPU)$(TOOL)cli.a
LIBDIRNAME=obj$(CPU)$(TOOL)cli

SUBDIRS =
#在PRE_INCLUDE里加上你的xxx.h的路径
PRE_INCLUDE= -I$(TMS_INCDIR) \
-I$(TMS_INCDIR)/idb \
-I$(TMS_INCDIR)/stp \
-I$(TMS_INCDIR)/rmon \
-I$(TMS_INCDIR)/swdrv \
-I$(TMS_INCDIR)/swdrv/$(SSP_NAME) \
-I$(TMS_INCDIR)/common\
-I$(TMS_INCDIR)/wdb\
-I$(TMS_INCDIR)/cli\
-I$(TMS_INCDIR)/lacp\
-I$(TGT_DIR)/config/ssp/infinity/oemmib \
-I$(TGT_DIR)/config/irp\
-I$(TGT_DIR)/config/all\
-I$(TGT_DIR)/h/tffs \
-I$(TGT_DIR)/h/types
#PRE_INCLUDE的最后一行的结尾是没有 \的

C_SOURCE = $(wildcard *.c)

C_OBJS = $(C_SOURCE:.c=.o)

OBJS = $(C_OBJS)



include $(TGT_DIR)/h/make/rules.library

##################################
#明白否?
##################################
windcsn 2003-02-17
  • 打赏
  • 举报
回复 1
例如:我的makefile中
INCLUDE = -I /usr/sybase/OCS-12_0/include -I ../SHR \
-I /home/tuxedo/include -I ../ora \
-I /usr/STLport/stlport
然后在连接目标文件的时候:
$(CC) $(CFLAGS) $(INCLUDE) -qtempinc=$(tempIncDir) -qmaxerr=10 -qrtti=all -qsrcmsg -o $(@) -c $<
这里的CC是编译器,CFLAGS是编译参数
那么我的INCLUDE 就是路径了,最上面的INCLUDE 你可以自己设顶了
acange 2003-02-17
  • 打赏
  • 举报
回复
CC=g++

makefile中不一定要指定 xxx.h所在的路径啊。 编译器自己会去默认路径找。
下面是一个十分简单的makefile.

===================================================
cserver: cserver.c
$(CC) cserver.c -o cserver -lpthread

cclient: cclient.c
$(CC) cclient.c -o cclient

clean:
$(RM) *.o *~
make是在1977年在贝尔实验室(Bell Labs)研发的 Unix系统的一款依赖关系检查工具程序(Utility software)。make的应用非常广泛,它被用来构建 C、C++ 、Pascal  Fortran 等项目,自动化构建生成可执行文件或者库文件。make通过读取Makefile文件以自动化建构软件, 它会根据依赖文件的修改时间进行判断。确定一个target的依赖关系,然后把生成这个target的相关命令传给shell去执行。GNU make 和大多数版本的 make 之间最重要的区别是 GNU make 是自由软件,常和GNU编译系统一起被使用,是大多数GNU Linux安装的一部分。GNU make 在 makefile 具有许多强大的功能,超出了其他 make 版本的功能,它还可以重新生成、使用、然后删除不需要保存的间文件。GNU make 还有一些非常方便的简单功能。例如,选项“假装源文件文件没有更改,即使它已更改。当您向头文件添加新宏时,这非常有用。大多数版本的 make 都会假设它们必须重新编译所有使用头文件的源文件,但是如果您知道对头文件的更改不需要重新编译 GNU make 为您提供了一种避免重新编译的方法-o file 。 黄强老师针对零编程基础的同学,精心打磨make核心知识点,帮助你快速掌握Linux编程的make的构建!适用人群: 零基础、新手、想快速学习Linux下C、C++编程的童鞋!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧