如何定义 Makefile 的几个包含路径

C + + 新手; 对包含、库和编译过程有基本的理解。

我当前的项目涉及到使用一个 Informix DB api,我需要在多个非标准目录中包含头文件。怎么写?没有在网上找到任何东西,可能是因为我没有使用好的搜索关键词

这是我尝试(不工作)的一种方法。只是显示 makefile

LIB=-L/usr/informix/lib/c++
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public


default:    main


main:   test.cpp
gcc -Wall $(LIB) $(INC) -c test.cpp
#gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp


clean:
rm -r test.o make.out
275265 次浏览

You have to prepend every directory with -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public

You need to use -I with each directory. But you can still delimit the directories with whitespace if you use (GNU) make's foreach:

INC=$(DIR1) $(DIR2) ...
INC_PARAMS=$(foreach d, $(INC), -I$d)

Make 的 替代品特性很好,帮助我写作

%.i: src/%.c $(INCLUDE)
gcc -E $(CPPFLAGS) $(INCLUDE:%=-I %) $< > $@

You might find this useful, because it asks make to check for changes in include folders too