我正在修改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。
提前致谢
编辑:
到目前为止的建议有助于我找到正确的目录。但它仍然没有使目录包含在编译中
答案 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
也有效。