문제

직장에서 업데이트 된 빌드 시스템을 실험하고 있습니다. 현재 대상 플랫폼에 따라 컴파일러 및 플래그를 설정하는 좋은 방법을 찾고 있습니다.

내가하고 싶은 것은 같은 것입니다

switch $(PLATFORM)_$(BUILD_TYPE)
  case "Linux_x86_release"
     CFLAGS = -O3
  case "Linux_x86_debug"
     CFLAGS = -O0 -g
  case "ARM_release"
     CC = armcc
     AR = armlink
     CFLAGS = -O2 -fx
     ...

GNU Make에서 지원하지 않습니다. 이제 내 첫 생각은 그냥 그렇게하는 것이 었습니다

-include $(PLATFORM)_$(BUILD_TYPE)

그러나 꽤 괜찮은 솔루션이지만 파일 간의 다른 것에 대한 개요를 얻기가 어렵습니다. 각각의 변수 정의 세트를 포함하는 좋은 60-80 파일을 작성하고 유지 관리하기를 기대하는 것은 말할 것도 없습니다. .

이것을 달성하는 더 나은 방법을 아는 사람이 있습니까? 즉 다른 변수를 기반으로 한 플래그 세트 및 기타 옵션을 설정합니까?

도움이 되었습니까?

해결책

(Automake/Autoconf)를 위해 그것을하는 시스템으로 전환하는 것은 더 간단 할 수 있습니다 ...

다른 팁

어때요 :

CFLAGS_Linux_x86_release        = -O3
CFLAGS_Linux_x86_debug          = -O0 -g


CFLAGS  = ${CFLAGS_${PLATFORM}_${BUILD}}

이러한 매개 변수를 구성하는 것은 a의 작업입니다 configure 스크립트.

즉, 구문을 조사 할 수 있습니다. 조건부 그리고 조건부 기능. 예를 들어 다음을 시도 할 수 있습니다.

ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_release)
    CFLAGS = -O3
endif
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_debug)
    CFLAGS = -O0 -g
endif

그만큼 Makefile 사용 git MakeFile 자체에서 사소한 구성 작업 (예 : 호스트 유형을 켜는 등)을 수행하는 MakeFile의 좋은 예입니다. 실제로 읽기 쉽고 합리적으로 사용하기 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top