makefile问题

时间:2011-03-10 01:54:01

标签: makefile

我正在修改makefile以包含标头的本地目录。但是,大多数makefile编译发生在我当前的makefile之外,限制了我可以做的事情。这是当前的makefile:

TARGET =    final    
LIBS =      -lsimple -lcheck -lsuif -luseful    
OBJS =      doproc.o main.o

all:            $(TARGET)

install-bin:    install-prog
include $(SUIFHOME)/Makefile.std

我希望使用的头文件目录(boost)与此makefile和doproc.cc/main.cc位于同一目录中。我尝试将makefile修改为此

TARGET =    final
INC=        -I/boost
LIBS =      -lsimple -lcheck -lsuif -luseful
OBJS =      doproc.o main.o

all:            $(TARGET) $(INC)

install-bin:    install-prog

include $(SUIFHOME)/Makefile.std

但没有效果。我在这台机器上有一个帐户,但没有root访问权限,我无法更改Makefile.std。如果这是微不足道的,我道歉。我不习惯使用makefile。

提前致谢

编辑:

到目前为止的建议有助于我找到正确的目录。但它仍然没有使目录包含在编译中

4 个答案:

答案 0 :(得分:3)

好的,如果不了解Makefile.std的内部结构,很难辨别所有细节。但是,让我们假设$(INC)在Makefile.std中并没有以某种方式神奇地消耗(它至少不是默认宏之一,请参阅make -p),在这种情况下,你必须附加你的include文件夹为CXXFLAGS(对于C ++)或CFLAGS(对于C),如下所示:

CXXFLAGS+=$(CXXFLAGS) -I$(MAKEDIR)/boost

旁注:这方面有不同之处,但我从哪里开始

all:            $(TARGET) $(INC)
对于-I/boost或甚至更正的-I$(MAKEDIR)/boost的值,

没有多大意义。原因是它不是变量赋值(可能而不是依赖),因此将被视为文件依赖(除非声明为.PHONY)。

我应该补充一点,我假设GNU make附带的常用默认规则。否则你必须向我们展示实际的规则%.o: %.cpp等......

答案 1 :(得分:1)

使用此 - 您当前的INC指定/ boost not ./boost:

INC=        -I$(PWD)/boost

答案 2 :(得分:0)

删除前面的前导/。您告诉编译器查看根文件夹下的/boost

答案 3 :(得分:0)

/是文件系统根目录; ./是当前目录。

您的意思是-I./boost吗? -Iboost也有效。