2012-03-12 3 views
0

저는 리눅스에서 기본적인 메이크 파일 기반 프로젝트를 가지고 있습니다. Windows의 Visual Studio에서도 빌드됩니다.Visual Studio 스타일 출력 디렉토리를 사용하여 Makefile을 설정하는 방법은 무엇입니까?

제 리눅스 메이크 파일을 수정하여 다른 바이너리, 디버그 및 릴리스가있는 여러 빌드를 작성하고 싶습니다.하지만 디버그 및 릴리스는 시작하지만 다른 것들을 추가 할 것입니다.

다른 경로로 다른 방법으로 소스를 작성하려면 어떻게 Makefile 프로젝트를 설정해야합니까?

g++ -ggdb -Wall -DDEBUG 
.o files in ./Debug/obj 
.so and binary files in ./Debug/bin 

그리고 출력이 될 것이다 해제 :

는 예를 들어, 디버그 빌드 뭔가 같은 것

g++ -Os -Wall 
.o files in ./Release/obj 
.so and binary files in ./Release/bin 

만들기 디버그 또는 릴리스를 만들거나 모든 것을 할 수있는 모든 만들 것합니다.

Makefile에 여러 빌드 유형을 작성하는 방법을 잘 모르겠지만 실제로 명확하지 않은 부분은 출력 디렉토리를 설정하고 소스 파일이 빌드되었는지 확인하기 위해 .o 파일 디렉토리를 설정하는 것입니다.

관련 예제 및 문서에 대한 포인터를 환영합니다.

답변

1

독서 시간을 확인, Paul Smith's homepage에 이상 머리, GNU의 메인테이너가이 두 기사를 확인하고 읽어 누가 :

을 당신은 아마 다음 것이다 Make의 곡식을 거스르는 것을 의미하기 때문에 현재 디렉토리 이외의 디렉토리에 빌드하는 것은 좋은 생각이 아닙니다.

이 기사에서는 빌드를 구성하는 방법에 대해서도 안내하며 사용자의 특정 상황에 맞을 수도 있습니다.

+0

감사합니다. 도움이되었고 정확하게 필요한 부분이었습니다. –

0

한 가지 방법은 프로젝트가 소스 디렉토리가 아닌 다른 디렉토리에서 구성 될 수 있도록 구성 메커니즘 (Autoconf의 ./configure 스크립트와 유사)을 지원하는 것입니다. 그런 다음 다른 방법으로 구성하고 빌드 할 수 있습니다.

또 다른 방법은 lndir 도구를 사용하여 심볼릭 링크 된 빌드 트리를 만드는 것입니다. 이렇게하면 즉시 모든 프로젝트에 멀티 빌드 기능이 추가됩니다. 원본 트리의 원본 파일에 대한 심볼릭 링크로 채워진 미러 디렉토리 트리가 있다는 아이디어가 있습니다. 프로그램의 빌드 시스템은 현명하지 못합니다 (경로를 정식화하거나 심볼릭 링크를 제거하는 것과 같은 바보 같은 일을하지 않는 한 : Lisp 빌드 시스템 ASDF의 관리자들이주의를 기울이십시오!). 심볼릭 링크를 통해 파일에 액세스하지만 객체를 로컬에서 삭제합니다. 좋은 점은 원본 디렉토리가 원본 그대로이며 읽기 전용 일 수도 있다는 것입니다! 그리고 make clean보다 더 잘할 수 있습니다. lndir 생성 된 링크 팜을 완전히 제거하여 완전히 깨끗한 상태로 만듭니다.

저는 여러 아키텍쳐 (모든 패키지 : glibc, gcc, apache, 당신 이름)에 리눅스 배포판을 빌드하기 위해 이런 트릭을 사용했습니다.

모두 동일한 작업 사본으로 제작되었습니다. 같은 압축을 푼 소스.

이 지원을 프로젝트에 해킹하는 것이 최후의 수단이됩니다. GNU Make 언어를 즐기는 사람은 GNU Make 언어를 사용하십시오. GNU Make의 Info 매뉴얼을 처음부터 끝까지 2 ~ 3 번 읽으십시오. 나는 어떻게하는지 알고 있습니다. 그리고 나는 그 방법도 그렇게했습니다.하지만 요점은 무엇입니까? 설명하기에 공간이 필요하고 가치가 없습니다.

+0

symlink로 연결된 트리의 단점은 symlink를 쉽게 편집 할 수 있지만 (예 : 편집기에서 오류 탐색 지원을 통해 컴파일 오류 수정) 파일을 추가하는 경우 원래 트리에 추가해야한다는 점을 기억해야합니다 심볼릭 링크를 새로 고칩니다. 큰 문제는 아니지만 신발에있는 작은 돌은 몇 마일을 걸어 가면 큰 불편을 겪을 수 있습니다. – Kaz

관련 문제