2008-09-29 5 views
7

automake로 파일별로 플래그를 설정하는 방법이 있습니까?
특히, C++ 프로젝트가 있고 특정 경고를 비활성화하려는 모든 파일을 제외하고 모든 파일을 컴파일하려면 어떻게해야합니까? automake로 파일 당 플래그 설정하기

내가 좋아하는 뭔가를 시도 :

CXXFLAGS = -WAll ... 
bin_PROGRAMS = test 
test_SOURCES = main.cpp utility.cpp 
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value 

을했지만 작동하지 않았다.

EDITED : 실제로 오도 된 automake 매뉴얼 참조가 삭제되었습니다 (Douglas Leeder 덕분).

답변

5

은 Automake는 대상별 플래그를 지원을 행된 객체 플래그. 한 가지 방법은 주위에 당신의 개체를 포함하는 작은 도서관을 만드는 것입니다 :

CXXFLAGS = -Wall ... 
bin_PROGRAMS = test 
test_SOURCES = main.cpp 
test_LDADD = libutility.a 
noinst_LIBRARIES = libutility.a 
libutility_a_SOURCES = utility.cpp 
libutility_a_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value 
2

혼란 스러워요. 그 부분은 automake하기위한 옵션을 말하는 것입니다.

-W CATEGORY --warnings 범주에 떨어지는 = 카테고리 출력 경고 :

IT는 automake를 명령 줄 옵션을 설정하는 방법입니다. 범주는 다음 중 하나 일 수 있습니다.

gnu 
    warnings related to the GNU Coding Standards (see Top). 
obsolete 
    obsolete features or constructions 
override 
    user redefinitions of Automake rules or variables 
portability 
    portability issues (e.g., use of make features that are known to be not portable) 
syntax 
    weird syntax, unused variables, typos 
unsupported 
    unsupported or incomplete features 
all 
    all the warnings 
none 
    turn off all the warnings 
error 
    treat warnings as errors 

범주의 이름 앞에 'no-'를 붙이면 해당 범주를 끌 수 있습니다. 예를 들어, -Wno-syntax는 사용하지 않는 변수에 대한 경고를 표시하지 않습니다.

기본적으로 출력되는 범주는 '구문'및 '지원되지 않음'입니다. 또한 'gnu'및 'portability' 은 --gnu 및 --gnits strictness에서 활성화됩니다.

WARNINGS 환경 변수에는 쉼표로 구분 된 범주의 목록을 포함 할 수 있습니다. 이 경우 명령 줄 앞에 계정을 입력하십시오. 스위치를 사용하면 경고가 활성화되어 있으면 경고음을 무시합니다. 이 변수는 autoconf와 같은 다른 도구에서도 으로 사용됩니다. 알 수없는 범주는이 경우에 대해 무시됩니다. 이유는 입니다.

17 절에 나열된 파일 당 섹션은 소스 파일이 아닌 Makefile마다 참조됩니다.

내가 어떤 당 소스 파일 플래그 설정 잘 모르는 것 같아요,하지만 당신은 각 결과 바이너리에 대한 옵션을 설정할 수 있습니다 당신이 원하는 반면,

binaryname_CXXFLAGS 
13

당신은 automake으로이 작업을 수행 할 수 없습니다 ...하지만 이) = make으로을 당신 Makefile.am에 다음 줄을 추가 할 수 있습니다

utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value 

자세한 내용은 GNU Make documentation : Target-specific Variable Values을 참조하십시오.

+0

질문은 이제 다소 오래되었지만 대답은 흥미 롭습니다. 감사합니다 :) –