나는 makefile로 C++ 프로젝트를 만들고있다. 몇 가지 수정을해야하지만 그 전에는 플래그가 GNU make에서 해석되는 방식에 대해 질문이 있습니다.플래그가 설정되었는지 GNU make가 어떻게 이해합니까?
#ifdef FEATURE_DISABLED
//Don't invoke the functions for the feature
#else
//Invoke the functions for the feature
#endif
: 다음 코드에서, 정교하게하기 위해, 나는
# Two options for a feature:
FEATURE=on off
# other lines in the make file
# By default, the feature is turned off
ifndef FEATURE
FEATURE = off
endif
# other lines in the make file
# A number of other flags are defined here
# I have defined a flag to indicate that my feature is disabled
CXXFLAGS_off = -DFEATURE_DISABLED
# Adding all the flags
CXXFLAGS += $(CXXFLAGS_$(FEATURE)) #Other flags also added
지금 어딘가에 내 코드에서, 나는이 줄을 활성화하거나 내 프로젝트의 컴파일하는 동안 기능을 사용하지 않으려면이 옵션을 사용할 수 있습니다
컴파일하는 동안, 필자가 FEATURE = on이라고 말하면 프로그램이 잘 작동하고있는 것을 볼 수 있습니다. make FEATURE = off라고 말하면 비활성화됩니다.
그러나 내 문제는 컴파일러가 내 선택을 어떻게 해석하고 있는지 정확히 이해하지 못한다는 것입니다. 예를 들어, "FEATURE = off"라고 말하고 있는데,이 라인은 off 플래그가 활성화되어 있고 코드가 기능을 해제하고 컴파일되는 방식은 무엇입니까? 위에서 쓴 것처럼 CXXFLAGS에 내 기능의 플래그를 추가하지만 FEATURE = 해제는 FEATURE_DISABLED 플래그가 설정되었음을 어떻게 이해합니까?
설명해 주셔서 감사합니다.