Makefile에서 여러 포함 경로를 정의하는 방법


96

C ++ 입문; 포함, 라이브러리 및 컴파일 프로세스에 대한 기본 이해. 아직 몇 가지 간단한 메이크 파일을 만들었습니다.

내 현재 프로젝트는 informix DB API 사용과 관련이 있으며 둘 이상의 비표준 디렉토리에 헤더 파일을 포함해야합니다. 작성하는 방법? Havent는 인터넷에서 아무것도 찾았습니다. 아마도 내가 좋은 검색어를 사용하지 않았기 때문일 것입니다.

이것은 내가 시도한 (작동하지 않는) 한 가지 방법입니다. 메이크 파일을 보여주기 위해

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

답변:


112

모든 디렉토리 앞에 다음을 추가해야합니다 -I.

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

1
gcc를 수동으로 실행하더라도 여전히 작동하지 않습니다.
NoBugs

92

-I각 디렉토리와 함께 사용해야 합니다. 그러나 (GNU) make 's를 사용하면 여전히 공백으로 디렉토리를 구분할 수 있습니다 foreach.

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

9
+ 이것이 제가 여기에서 찾고있는 것입니다. $(foreach,,)
Jonathon Reinhart

16
이하 : INC_PARAMS=$(INC:%=-I%)대체 . $(foreach,,)더 읽기 쉽지만 대체가 너무 일반적으로 사용되므로 어쨌든 작동 방식을 익히는 것이 좋습니다.
skalee 2014 년

5
또는 INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming

나도 여기에 왔습니다 $(foreach,,).
J. Doe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.