2012-10-29 3 views
0

g ++과 mingw를 사용하여 리눅스와 윈도우 모두에 내 프로그램을 컴파일하고 싶습니다. 컴파일 간의 유일한 차이점은 파일 이름을 사용하고 출력하는 컴파일러입니다.다중 타겟을위한 컴파일

단일 make 명령은 두 출력 파일을 모두 생성해야합니다. 가능한 한 makefile에서 거의 중복되지 않도록이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

2

이 방법에 대해 :

linux-name: CC:=g++ 
windows-name: CC:=mingw 

linux-name windows-name: 
    $(CC) whatever -o [email protected] 

편집 : 내가 위에 쓴 것은 메이크 만 새로운 부분

; 나는 나머지 makefile이 함축되어 있다고 가정했다. 좀 더 명확히하기 :

+0

이렇게 두 개의 대상 이름을 넣을 수 있는지 알지 못했습니다. 불행히도 그것은 나를 위해 작동하지 않습니다, 유일한 리눅스 - 이름이 만들어집니다. 또한 컴파일이 필요한 종속 타겟이있는 경우 어떻게해야합니까? – Artium

+0

편집을 마친 후 처음 시도한 것은 실수 였기 때문에 'linux-name'과 'windows-name'타겟 뒤에 'all'target에 대한 나의 정의를 넣었습니다. 그러나 여전히 해결책에는 문제가 있습니다. 객체 파일은 한 번만 컴파일됩니다. 예제에서는 Linux 용으로 만 컴파일됩니다. make가 windows-name 타겟을 실행할 때, 오브젝트 파일들은 이미 존재하고 그것들을 다시 컴파일하지 않을 것이다. – Artium

+0

또한 % .o 및 $ <구문을 보여 주셔서 감사합니다. – Artium