here에 지정된 빌드 변형을 기반으로 다른 소스를 사용하길 묻는 질문에 따라 doxygen 설명서를 작성하는 데 동일한 문제가있는 것 같습니다. 빌드 변형을 기반으로 다른 구성이 필요합니다.waf의 doxygen 기능에 대한 입력으로 다른 구성 소스 사용
의 예는 아주 동일하게 유지하지만, 조금 더의 얻을 :
디렉토리 구조는 다음과 같습니다 doxgen의
- a.conf 번호의 설정
- 문서 소스 코드 소스
- b.conf # 소스 b에 대한 doxgen 소스 코드 ,515,
- stylesheetfile 번호 모두
- SRC
- AC
- BC
- doxygen.py
- WScript와는 대한 동일
웹 애플리케이션 방화벽 doxygen.py
실현하는 것이 인waf 프로젝트의 GitHub에있는 저장소와 동일 doxygen.py.
웹 애플리케이션 방화벽 스크립트는 doxygen
옵션을 받아들이 확장이다. 그러나 doxygen
이라는 정의 내에서 빌드 변형 (여기 bld.variant
)을 검사 할 수 없으며 doxygen 기능에 정의 된 빌드 변형이 없으므로 오류가 발생합니다.
빌드 변형을 확인하는 부분은 화살표가있는 예제에 표시되어 있습니다.
doxygen 기능은 어디서 어떻게 구현해야합니까? doxygen 기능은 작동하며 빌드 변형을 기반으로 올바른 구성을 사용합니다.
MWE :
def options(opt):
opt.load(['doxygen'], tooldir=os.path.join('doxygen.py'))
def configure(ctx):
load('compiler_c')
def build(bld):
if not bld.variant:
bld.fatal('call 'waf build_a' or 'waf build_b', and try 'waf --help'')
if bld.variant == 'a':
bld.program(source='a.c', target='app', includes='.', features=['doxygen'])
elif bld.variant == 'b':
bld.program(source='b.c', target='app', includes='.', features=['doxygen'])
else:
bld.fatal('err')
# create build and clean commands for each build context
from waflib.Build import BuildContext, CleanContext
for x in 'a b'.split():
for y in (BuildContext, CleanContext):
name = y.__name__.replace('Context','').lower()
class tmp(y):
__doc__ = '''executes the {} of {}'''.format(name, x)
cmd = name + '_' + x
variant = x
def doxygen(bld):
import sys
import logging
from waflib import Logs
if bld.env.DOXYGEN:
if bld.variant == 'a': # <=================
_conf = 'src/a.conf' # <=================
elif bld.variant == 'b': # <=================
_conf = 'src/b.conf' # <=================
else: # <=================
bld.fatal('err') # <=================
bld.logger = Logs.make_logger('doxy.log', out)
hdlr = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('%(message)s')
hdlr.setFormatter(formatter)
bld.logger.addHandler(hdlr)
bld(features='doxygen', doxyfile=_conf)