📄 recursive.jam
字号:
# Copyright 2001, 2002 Dave Abrahams # Copyright 2005 Rene Rivera # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) ############################################################### Rules and actions that test Jam by invoking it recursively ## ## This is necessary for testing anything that requires Jam ## to execute build actions whose results must be checked, ## and anything which exits Jam with a failure code (e.g. a ## failed assertion). ################################################################ Creates a fake target, always built, which succeeds in building if Invoking a# Jamfile containing the given string succeeds. If optional-expected-output is# supplied, creates another fake target which succeeds in building if# optional-expected-output is in the Jam output.## RETURNS: the target name of the Jam command.rule Jam ( command : expected-output ? ){ local jam-cmd = "$(command:G=jam_command)" ; NOTFILE "$(jam-cmd)" ; ALWAYS "$(jam-cmd)" ; DEPENDS all : "$(jam-cmd)" ; if ($NT) { redirect on $(jam-cmd) = "nul" ; } else if $(UNIX) { redirect on $(jam-cmd) = "/dev/null" ; } if $(VERBOSE) { redirect on $(jam-cmd) = ; } invoke-Jam "$(jam-cmd)" ; if $(expected-output) { redirect on $(jam-cmd) = "scratch-output.txt" ; local output-target = "$(expected-output:G=$(command))" ; NOTFILE "$(output-target)" ; ALWAYS "$(output-target)" ; DEPENDS all : "$(output-target)" ; Expect-in-output "$(output-target)" ; if $(VERBOSE) { if $(NT) { VERBOSE on $(output-target) = "type " ; } else { VERBOSE on $(output-target) = "cat " ; } } } return $(jam-cmd) ;}# Just like the "Jam" rule, above, but only succeeds if the Jam command /fails/.rule Jam-fail ( command : expected-output ? ){ local target = [ Jam $(command) : $(expected-output) ] ; FAIL_EXPECTED $(target) ; return $(target) ;}# The temporary jamfile we write is called "temp.jam". If the user has set# BOOST_BUILD_ROOT, it will be built there.gBOOST_TEST_JAMFILE = temp.jam ;LOCATE on gBOOST_TEST_JAMFILE ?= $(BOOST_BUILD_ROOT) ;# Runs Jam on a temporary Jamfile which contains the string in $(command:G=)# and redirects the results into a file whose name is given by $(redirect) on# commandrule invoke-Jam ( command ){ PREFIX on $(command) = "actions unbuilt { } unbuilt all ;" ; if $(NT) { REMOVE on $(command) = $(SystemRoot)\System32\find ; } REMOVE on $(command) ?= rm ;}actions invoke-Jam{ echo $(PREFIX) $(<:G=) > $(gBOOST_TEST_JAMFILE) jam -sBOOST_ROOT=../../.. -sJAMFILE=$(gBOOST_TEST_JAMFILE) $(JAMARGS) >$(redirect)}# $(REMOVE) $(gBOOST_TEST_JAMFILE)# These actions expect to find the ungristed part of $(<) in scratch-output.txt# and return a nonzero exit code otherwiseif $(NT){ # Explicitly get the NT find command in case someone has another find in their path. actions quietly Expect-in-output { $(VERBOSE)scratch-output.txt ; $(SystemRoot)\System32\find /C "$(<:G=)" scratch-output.txt >nul }}else{ # Not really the right actions for Unix; the argument will be interpreted as # a regular expression. Is there a simpler find? actions quietly Expect-in-output { $(VERBOSE)scratch-output.txt; grep "$(<:G=)" scratch-output.txt }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -