如何在Makefile中定义几个包含路径

时间:2010-11-09 14:28:55

标签: c++ include makefile

C ++新手;基本了解包含,库和编译过程。做了一些简单的makefile。

我当前的项目涉及使用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

3 个答案:

答案 0 :(得分:92)

您必须在-I之前添加每个目录:

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

答案 1 :(得分:77)

您需要对每个目录使用-I。但是如果使用(GNU)make foreach,你仍然可以用空格分隔目录:

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

答案 2 :(得分:1)

Make 的 substitutions 功能很好,帮助我写作

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

您可能会发现这很有用,因为它也要求 make 检查包含文件夹中的更改