📄 doxygen.jam
字号:
RM on $(target) = [ modules.peek common : RM ] ; *.XML on $(target) = [ path.native [ path.join [ path.make [ on $(target) return $(LOCATE) ] ] $(target:B:S=) *.xml ] ] ;}# The rules below require Boost.Book stylesheets, so we need some code to check# that the boostbook module has actualy been initialized.#rule check-boostbook ( ){ if ! [ modules.peek boostbook : .initialized ] { ECHO "error: the boostbook module is not initialized" ; ECHO "error: you've attempted to use the 'doxygen' toolset, " ; ECHO "error: which requires Boost.Book," ; ECHO "error: but never initialized Boost.Book." ; EXIT "error: Hint: add 'using boostbook ;' to your user-config.jam" ; }}# Collect the set of Doxygen XML files into a single XML source file that can be# handled by an XSLT processor. The source is completely ignored (see# doxygen-action), because this action picks up the Doxygen XML index file# xml/index.xml. This is because we can not teach Doxygen to act like a NORMAL# program and take a "-o output.xml" argument (grrrr). The target of the# collection will be a single Doxygen XML file.#rule collect ( target : source : properties * ){ check-boostbook ; local collect-xsl-dir = [ path.native [ path.join [ boostbook.xsl-dir ] doxygen collect ] ] ; local source-path = [ path.make [ on $(source) return $(LOCATE) ] ] ; local collect-path = [ path.root [ path.join $(source-path) $(source:B) ] [ path.pwd ] ] ; local native-path = [ path.native $(collect-path) ] ; local real-source = [ path.native [ path.join $(collect-path) index.xml ] ] ; xsltproc.xslt $(target) : $(real-source) $(collect-xsl-dir:S=.xsl) : <xsl:param>doxygen.xml.path=$(native-path) ;}# Translate Doxygen XML into BoostBook.#rule xml-to-boostbook ( target : source : properties * ){ check-boostbook ; local xsl-dir = [ boostbook.xsl-dir ] ; local d2b-xsl = [ path.native [ path.join [ boostbook.xsl-dir ] doxygen doxygen2boostbook.xsl ] ] ; local xslt-properties = $(properties) ; for local prefix in [ feature.get-values <prefix> : $(properties) ] { xslt-properties += "<xsl:param>boost.doxygen.header.prefix=$(prefix)" ; } for local title in [ feature.get-values <reftitle> : $(properties) ] { xslt-properties += "<xsl:param>boost.doxygen.reftitle=$(title)" ; } xsltproc.xslt $(target) : $(source) $(d2b-xsl) : $(xslt-properties) ;}flags doxygen.xml-dir-to-boostbook OPTIONS <doxygen.doxproc.index>yes : --enable-index ;flags doxygen.xml-dir-to-boostbook ID <doxygen.doxproc.id> ;flags doxygen.xml-dir-to-boostbook TITLE <doxygen.doxproc.title> ;rule xml-dir-to-boostbook ( target : source : properties * ){ DOXPROC on $(target) = $(.doxproc) ; LOCATE on $(source:S=) = [ on $(source) return $(LOCATE) ] ; doxygen.doxproc $(target) : $(source:S=) ;}# Generate the HTML redirect to HTML dir index.html file.#rule html-redirect ( target : source : properties * ){ local uri = "$(target:B)/index.html" ; print.output $(target) plain ; print.text"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head> <meta http-equiv=\"refresh\" content=\"0; URL=$(uri)\" /> <title></title></head><body> Automatic redirection failed, please go to <a href= \"$(uri)\">$(uri)</a>.</body></html>" : true ;}# User-level rule to generate BoostBook XML from a set of headers via Doxygen.#rule doxygen ( target : sources * : requirements * : default-build * : usage-requirements * ){ local project = [ project.current ] ; if $(target:S) = .html { # Build an HTML directory from the sources. local html-location = [ feature.get-values <location> : $(requirements) ] ; local output-dir = [ path.root [ path.join [ $(project).get build-dir ] $(html-location:E=html) ] [ path.pwd ] ] ; local output-dir-native = [ path.native $(output-dir) ] ; requirements = [ property.change $(requirements) : <location> ] ; ## The doxygen configuration file. targets.main-target-alternative [ new typed-target $(target:S=.tag) : $(project) : DOXYFILE : [ targets.main-target-sources $(sources) : $(target:S=.tag) ] : [ targets.main-target-requirements $(requirements) <doxygen:param>GENERATE_HTML=YES <doxygen:param>GENERATE_XML=NO <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\"" <doxygen:param>HTML_OUTPUT=$(target:B) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target:S=.tag) ; ## The html directory to generate by running doxygen. targets.main-target-alternative [ new typed-target $(target:S=.dir) : $(project) : DOXYGEN_HTML_MULTIFILE : $(target:S=.tag) : [ targets.main-target-requirements $(requirements) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target:S=.dir) ; ## The redirect html file into the generated html. targets.main-target-alternative [ new typed-target $(target) : $(project) : DOXYGEN_HTML : $(target:S=.dir) : [ targets.main-target-requirements $(requirements) <location>$(output-dir) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; } else { # Build a BoostBook XML file from the sources. local location-xml = [ feature.get-values <location> : $(requirements) ] ; requirements = [ property.change $(requirements) : <location> ] ; local target-xml = $(target:B=$(target:B)-xml) ; ## The doxygen configuration file. targets.main-target-alternative [ new typed-target $(target-xml:S=.tag) : $(project) : DOXYFILE : [ targets.main-target-sources $(sources) : $(target-xml:S=.tag) ] : [ targets.main-target-requirements $(requirements) <doxygen:param>GENERATE_HTML=NO <doxygen:param>GENERATE_XML=YES <doxygen:param>XML_OUTPUT=$(target-xml) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target-xml:S=.tag) ; ## The Doxygen XML directory of the processed source files. targets.main-target-alternative [ new typed-target $(target-xml:S=.dir) : $(project) : DOXYGEN_XML_MULTIFILE : $(target-xml:S=.tag) : [ targets.main-target-requirements $(requirements) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target-xml:S=.dir) ; ## The resulting BoostBook file is generated by the processor tool. The ## tool can be either the xsltproc plus accompanying XSL scripts. Or it ## can be the python doxproc.py script. targets.main-target-alternative [ new typed-target $(target-xml) : $(project) : BOOSTBOOK : $(target-xml:S=.dir) : [ targets.main-target-requirements $(requirements) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target-xml) ; targets.main-target-alternative [ new install-target-class $(target:S=.xml) : $(project) : $(target-xml) : [ targets.main-target-requirements $(requirements) <location>$(location-xml:E=.) <name>$(target:S=.xml) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] ] ; $(project).mark-target-as-explicit $(target:S=.xml) ; targets.main-target-alternative [ new alias-target-class $(target) : $(project) : : [ targets.main-target-requirements $(requirements) : $(project) ] : [ targets.main-target-default-build $(default-build) : $(project) ] : [ targets.main-target-usage-requirements $(usage-requirements) <dependency>$(target:S=.xml) : $(project) ] ] ; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -