make.inc 및 Makefile로 컴파일 할 수 있습니까?


3

나는 make 파일을 사용하는 초보자입니다.

make.inc를 사용하여 프로젝트에 새 모듈을 추가했습니다.

프로젝트의 구조는 다음과 같습니다.

/Project/build.sh
/Project/make.inc

/Project/Module1/Makefile
/Project/Module2/Makefile
/Project/Module3/Makefile
/Project/Module4/Makefile

/Project/my_module/Makefile

처음에는 make.inc를 사용하여 컴파일 할 수있는 4 개의 다른 모듈이 있습니다.

지금까지 추가 한 모듈은 자체 Makefile로 컴파일되고 있습니다. 이제이 make 파일에 make.inc 경로를 포함시켜 모든 모듈에 대해 많은 플래그가 동일하므로 make.inc에 이미 정의 된 CFLAGS를 재사용합니다. 이제 make.inc 사용하여 build.sh를 사용하여 전체 프로젝트를 컴파일 할 수 있습니다.

그러나 Makefile을 사용하여 모듈을 단독으로 컴파일하면 CFLAGS가 make.inc에 정의되고 모듈의 경로 값을 전달하는 변수도 정의되므로 오류가 발생합니다.

이 make 파일 만 실행할 때 해당 경로를 얻는 방법

make 파일과 make.inc를 모두 사용하여 어떻게 컴파일 할 수 있는지 알고 싶습니다.

티아

답변:


1

Makefile루트 디렉토리에와 같은 명령을 포함하는 메인이 있어야한다고 생각합니다 include ./make.inc.

또는 각 하위 폴더 \ Makefile 파일 위에 추가하십시오. include ../make.inc

http://owen.sj.ca.us/~rk/howto/slides/make/slides/makerecurs.html 에서 좋은 예를 찾았습니다.


../make.inc를 포함하는 아이디어가 효과가 있다고 medigeek에게 감사드립니다. 유일한 것은 변수 수단으로 제어되는 방식으로하고 싶습니다. ../를 사용하는 것은 일종의 하드 코딩이지만 반드시 작동합니다.
user2448138

../부모 / 루트 디렉토리로 돌아갑니다. 전체 경로가 아닌 상대 디렉토리입니다. 불행히도 당신이 찾고있는 것을 이해하지 못합니다. ../는 OS에 독립적이라고 생각합니다. :)
Savvas Radevic

방금 프로젝트 makefile에 정의 된 변수를 ../ 대신 디렉토리 경로로 사용하려고했습니다. build.sh를 사용하여 변수를 내 보낸 다음 더 낮은 makefile로 전달하여 그렇게 할 수 있습니다. 그러나 build.sh가 실행되지 않고 Makefile 모듈을 사용하여 컴파일하려고하면 해당 변수가 선언되지 않습니다.
user2448138
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.