remake的使用

remake的使用SYNOPSIS remake OPTION TARGET OPTIONS c search parent 如果一个 makefile 或者终极目标在当前目录无法找到 remake 将会在父目录搜索 Makefile 直到找到符合条件的最近的父目录中的 Makefile 在这方面 除了 c 无需指定目录

大家好,我是讯享网,很高兴认识大家。

SYNOPSIS

remake [OPTION]... [TARGET]... 
讯享网

OPTIONS

  • -c, --search-parent
    如果一个makefile或者终极目标在当前目录无法找到,remake将会在父目录搜索Makefile.直到找到符合条件的最近的父目录中的Makefile
    在这方面,除了-c无需指定目录,选项-c是很类似-C
  • -! | –post-mortem:
    在出现错误时进入调试器。这与另一个选项相同:–debugger –debugger-stop = error
  • -P, --profile:
    创建callgrind配置文件输出。 Callgrind输出可与kcachegrind,callgrind_annotate或gprof2dot一起使用以分析数据。 您不仅可以获取时间,还可以查看目标依赖关系的图形
  • --targets
    打印出读入的makefile中显式目标名列表
  • --tasks
    打印出读入的makefile中含有注释的显式目标名列表。
    一个注释可以在目标开始之前以#:开始描述
讯享网#: This is the main target all: @echo all here #: Test things check: @echo check here #: Build distribution dist: @echo dist here 

Running remake –tasks gives:

all This is the main target check Test things dist Build distribution 
  • x, --trace [=FLAGS]:
    除正常处理外,还打印调试信息。
    如果省略标志,则行为与指定–trace = normal时的行为相同
    flags can be one of:
    1. normal: basic tracing and shell tracing; this is the default
    2. read: for tracing all Makefiles read in,
    3. noshell: which is like `normal but shell tracing is disabled
    4. full: for maximum tracing
  • -X, --debugger [=TYPE]:
    进入调试器
    If type is given it may be one of:
    1. normal: basic tracing and shell tracing; this is the default
    2. goal: for all tracing Makefiles read
    3. preaction like normal but shell tracing is disabled
    4. full: for maximum tracing.
    5. fatal: for entering the debugger on a fatal error. The –post-mortem option sets this
    6. error: for entering the debugger on an error.

The Remake Debugger

讯享网remake<<4>> help Command Short Name Aliases ---------------------- ---------- --------- break [TARGET|LINENUM] [all|run|prereq|end]* (b) L cd DIR (C)改变工作目录 comment TEXT (#)调试器不会读取以这个开头的命令 continue [TARGET [all|run|prereq|end]*] (c)继续执行调试后的Makefile,直到另一个断点或停止点。 如果指定了目标,则在continue之前在该目标上设置一个断点。 并可以与break一样对目标的不同阶段设置断点 delete BREAKPOINT_NUMBERS... (d)删除断点 down [AMOUNT] (D)向下移动 AMOUNT 个栈区,AMOUNT默认为1 edit (e)在当前目标进行编辑 expand STRING (x)如果STRING中有变量,扩展变量 finish [AMOUNT] (F)运行到目标完成时(跳过依赖),类似单步调试,AMOUNT指额外运行的次数,默认为0 frame N (f) 从当前目标改变到指定目标上,栈区跳转,N默认为0 help [ command [ subcommand ] (h) ? 帮助信息 info [SUBCOMMAND] (i) list [TARGET|LINE-NUMBER] (l)列出目标信息 load *file-glob* (M)读取指定的makefile next [AMOUNT] (n)运行到下一个认为你感兴趣的目标,如目标的依赖 print { 
   VARIABLE [attrs...]} (p)打印变量的值 pwd (P)打印当前工作目录 quit [exit-status] (q) exit, return 退出remake一层嵌套 run [ARGS] (R) restart 从头开始运行Makefile,没有参数时,使用最后指定的参数(运行时) set OPTION { 
   on|off|toggle} (=)修改调试器的设置相关环境变量 setq VARIABLE VALUE (")设置GNU Make变量,值内的变量定义时不扩展,使用时扩展 setqx VARIABLE VALUE (`)设置GNU Make变量,值内的变量定义在赋值发生之前展开。 shell STRING (!) !! 在debugger中执行shell命令 show [SUBCOMMAND] (S)显示调试器的设置相关环境变量 skip (k)跳过执行您当前目标的其余命令。 source *file-glob* (<)从文件(源文件)读取和运行调试器命令 step [AMOUNT] (s)逐步执行,直到遇到下一个目标。AMOUNT表示步数 target [TARGET-NAME] [info1 [info2...]] (t) up [AMOUNT] (u) 向上移动 AMOUNT 个栈区,AMOUNT默认为1 where [count] (T) backtrace, bt 打印目标的栈,默认打印全部,可以指定count显示最近的几个栈 write [TARGET [FILENAME]] (w) 将目标需要执行的命令写入到文件中 Readline command line editing (emacs/vi mode) is available. For more detailed help, type 'help COMAMND-NAME' or consult the online-documentation. 

打印说明

Reading makefiles... Updating makefiles... Updating goal targets... -> (/home/hide_liao/Project/openwrt/include/toplevel.mk:226) 位置信息 prereq: prepare-tmpinfo .config remake<<0>> 

->,事件图标
(/home/hide_liao/Project/openwrt/include/toplevel.mk:226),位置信息
prereq: prepare-tmpinfo .config,目标与依赖
remake<<0>>,提示符<0>中的0是命令历史编号。如果支持GNU Readline历史,那在我们输入命令时会增加它,否则它将保持为零。对于每个要重新执行的递归调用,我们将在该数字周围添加另一对尖括号<>。

Here is a list of event icons:

Icon Event
-> Stopped before checking target prerequisites.暂停在检查目标条件的之前
.. Stopped after checking target prerequisites.
<- Stopped after running target commands.暂停在运行完目标的命令的时候
rd About to read a Makefile
!! Error encountered and --post-mortem flag given. In post-mortem debugging. 出现错误!!
-- Ran a debugger step of a Makefile target and it’s not one of the above.
++ Ran a debugger step in a POSIX command and it’s not one of the above.
:o A call to the debugger using the $(debugger) function in the Makefile
|| Finished making the goal target

设置断点

Examples:

break # list all breakpoints break 10 # Break on line 10 of the Makefile we are # currently stopped at break tests # Break on the "tests" target break tests prereq # Break on the "tests" target before dependency checking is done 
  • before target prerequisite checking(目标判断是否运行之前): prereq
  • after target prerequisite checking but before running commands(目标判断是否运行之后,命令运行之前,默认为该项): run
  • after target is complete(目标命令执行完毕之后): end

删除断点

delete [ bpnumber [bpnumber…] ] 

参数为断点号,多个时使用空格分隔。不设置参数时,默认删除所有断点

打印变量

print [variable] 

变量无需带$符号,并且大小写敏感

扩展变量

expand string 

remake<0> expand MAKE (origin default) MAKE := /tmp/remake/src/./make /tmp/remake/src/Makefile:264: Makefile.in remake<1> print MAKE # note the difference with the print (origin default) MAKE = $(MAKE_COMMAND) remake<2> expand $(MAKE) # Note using $( ) doesn't matter here... /tmp/remake/src/./make # except in output format - no origin info 

解析目标

target [target-name] [info1 [info2…]] 

target-name是目标的名称,也可以是变量,如@(当前目标)或<(第一个依赖项)。如果省略了目标名称,则使用当前目标。
info可以有下列的选项:

  • attributes: rule
    • attributesprecious,
    • rule search,
    • and pattern stem
  • commands: 显示要更新目标所需执行的命令
  • depends: 显示目标的依赖,包括order 和 non-order的依赖
  • expand: 类似"commands",但是makefile的变量将会被扩展
  • nonorder: non-order dependencies
  • order: “order dependencies”
  • previous:有多个双冒号时的前一个目标名称
  • state: 目标的状态:
    • successully updated
    • needs to be updated
    • failed to be udated
    • invalid, an error of some sort occurred
  • time: 最后修改时间和文件是否被更新。如果目标不是最新的,将会打印“File is very old.”。如果目标是伪目标,则会打印 “File does not exist.”,而不是时间。在某些情况下,您可能会看到“Modification time never checked.”
  • variables: automatically set variables such as @ or <

将目标的命令写到一个文件中

write [target [[filename|here]]] 

该命令会将target会执行的命令写入到filename中,如果指定的是here,则不写入文件中,直接在debugger中打印内容。
如:

$ remake -X -f tests/spec/example/simple.Makefile Reading makefiles... Updating makefiles.... Updating goal targets.... -> (/tmp/remake/tests/spec/example/simple.Makefile:2) all: remake<0> write File "/tmp/all.sh" written. remake<1> w all here #!/bin/sh  /src/external-vcs/github/rocky/remake/tests/spec/example/simple.Makefile:2  all: #cd /src/external-vcs/github/rocky/remake echo all here 

从文件中读取命令开始运行

source file-glob 

Read debugger commands from the glob expansion of file-glob;

file-glob should resolve after glob expansion to single file.

Examples:

source /home/rocky/remake-dbgr.cmds # absolute path source ./remake-dbgr.cmds # relative path source remake-dbgr.cmds # relative path - same as above source ~/remake-dbgr.cmds # "~" is glob expanded source ~/[r]emake-dbgr.cmds # Same as above source ~/remake-dbgr.* # Includes the above, but is an error if not unique 

列出目标信息

list [ target ] list line-number | - 

列出目标依赖项和目标或行号的命令。
如果没有指定目标名称或行号,则使用当前目标。目标-意思为,将使用目标堆栈上的父目标。

显示与设置调试器的参数

显示参数:

remake<1> show show args -- Show the command-line invocation show basename -- Show if we are to show short or long filenames is off. show commands -- Show the history of commands you typed. show debug -- Show the value of the GNU Make debug mask (set via `--debug` or `-d`) is 3361. show ignore-errors -- Show the value of the GNU Make `--ignore-errors` (or `-i`) flag is off. show keep-going -- Show the value of the GNU Make `--keep-going` (or `-k`) flag is off. show silent -- Show the value of the GNU Make `--silent` (or `-s`) flag is off. show version -- Show the remake version. 

设置参数,最后的is off表示当前这个选项的值:

remake<1> set set basename -- Set if we are to show short or long filenames(是否只显示文件名,隐藏路径名) is off. set debug -- Set GNU Make debug mask(设置make的debug掩码) (set via --debug or -d) is 3361. set ignore-errors -- Set value of GNU Make --ignore-errors (or -i) flag is off. set keep-going -- Set value of GNU Make --keep-going (or -k) flag is off. set silent -- Set value of GNU Make --silent (or -s) flags. is off. set variable -- Change a debugger setting 

参考

https://remake.readthedocs.io/en/latest/

小讯
上一篇 2025-03-14 08:17
下一篇 2025-03-01 17:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120961.html