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


96

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

我当前的项目涉及使用notifyix DB api,我需要在多个非标准目录中包含头文件。怎么写呢?Havent在网上发现了任何东西,可能是因为我没有使用好的搜索字词

这是我尝试的一种方式(不起作用)。只是为了显示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

Answers:



92

您需要-I与每个目录一起使用。但是,如果使用(GNU)make's,仍然可以使用空格来分隔目录foreach

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

9
+这就是我来这里寻找的东西。$(foreach,,)
乔纳森·莱因哈特

16
或更短:INC_PARAMS=$(INC:%=-I%)替换$(foreach,,)更具可读性,但是替换是如此普遍,以至于熟悉它们的工作方式是很不错的。
skalee 2014年

5
INC_PARAMS = $(addprefix -I,$(INC))
马明

我也是来这里的$(foreach,,)
J. Doe,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.