英语法语西班牙文

OnWorks 网站图标

mppg - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 mppg

这是命令 mppg,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


makeppgraph -- 依赖图的图形分析

商品描述


?: -?, A: -一种,
--args-文件,
--参数文件, B: -b,
- 因为,
--构建原因, C: &cwd, D: -D,
-d,
--依赖,
&dir,
- 点,
- 下,
- 向下, G: -G,
--图形化, H: -H,
- 帮助,
&家,
--html, I: -一世,
-一世,
- 包括,
--包括目录,
--包括, L: -l,
- 日志,
--日志文件, M: -M,
-米,
&makepp,
$MAKEPPGRAPHLAGS,
- 合并,
- 模块, O: -o,
- 输出, P: -p,
- 清楚的, R: -r,
- 改名, S: -是的,
--单独的方向,
&suf, T: -t,
- 文本, U: -你,
- 向上,
- 向上,
&usr, V: -V,
- 版

制作图 [ 选项 ...] [ 模式 ...]

mpg [ 选项 ...] [ 模式 ...]

他们说,一张图片胜过千言万语”。 因此,让我们绘制您的依赖项或包括
不同角度的图表。 查看画廊
<http://makepp.sourceforge.net/gallery/> 了解您可以做什么。

每个节点代表一个源文件或一个目标,根据文件名模式着色。
文件的节点是矩形的。 虚假目标的节点是椭圆形的。 每条实线代表
直接依赖。 或者,您可以将包含关系显示为
虚线。 有关更详细但不太漂亮的文本视图,请参阅 makepplog。

但请注意,即使是小型构建,其复杂性也可能是惊人的! 这是因为与
.o 文件和系统包括您很容易拥有两倍于源文件的节点。 但
那没什么——边的数量通常远远超过节点的数量,因为有多个
包括声明。 无交叉布局通常是不可能的。

在实际项目中,复杂性变得疯狂。 基于模板的源代码等技术
文件生成、预处理器(例如嵌入式 SQL、接口定义语言、Qt
库)或将文件发布到中央目录(例如,只有一个“-I”或“-L”
选项)使图形爆炸。 即使边缘只有一个像素宽,你最终也会得到
纵横交错的宽黑色条纹。

一旦你意识到真正发生了什么,如果你幸运的话,你也许能够找到一种方法
简化您的构建设置。 但在你到达那里之前,你必须大幅减少
您显示的信息量。 为此,有各种选择、重命名和
合并“makeppgraph”中的可能性。 当你无法在两者之间取得平衡时
将图形缩小到可以合理显示的程度,同时仍然显示什么
你想看,你可能会退回到文本图。

OUTPUT FORMATS


图形布局、显示和操作是复杂的任务,超出了
“makeppgraph”。 相反,它为专用工具生成输入文件。 它创造了一个
输出文件替换或添加适当的后缀到其第一个输入文件。 如果说
is .makepp/日志, 默认情况下,输出文件将跳过 .makepp 目录,导致
日志文件. 如果第一个输入是 - (stdin),输出到 stdout。

uDraw(图形)
使用 uDraw(Graph)http://www.informatik.uni-bremen.de/uDrawGraph/> 你得到一个公平的
现代 GUI,它允许选择父母或孩子,找到边缘的另一端,或
隐藏子图。 调整节点距离等选项,并为边使用样条线
可以使图形更漂亮。

虽然上述功能使其成为一个非常有用的工具,但有一些小的
挂钩:

· 记忆力很强,经过长时间的冥想,它可能会崩溃
已显示任何内容 - 一个明确的迹象表明您必须减少节点数量
和/或进一步边缘。

· 它将图形属性和显示选项强烈分开。 这意味着你不能
将其侧向定向的事实放入生成的图中(即
通常在这里是必要的,因为即使重命名为较短的文件名
比高宽得多)。 作为一种解决方法,如果您不想将其设为默认值,或者
每次都从菜单中选择方向,他们提出了一个小启动脚本:

导出 UDG_HOME=/where/ever/uDrawGraph-3.1
TMP=`mktemp -t udg.XXXXXX` || 出口 1
陷阱“rm -f $TMP”退出
echo "[menu(file(open_graph(\"${1-log.udg}\"))),menu(layout(orientation(left_right)))]" >$TMP
$UDG_HOME/bin/uDrawGraph -init $TMP

· 尚不支持节点边框颜色。 由于这个“--because”显示双
边框应该是红色的。

· 将多个文件合并到一个节点时会导致自边
"--dependencies" 和 "--includes", 只会随机显示其中之一
点缀或绘制并带有“2*”标签。

的Graphviz
图形可视化http://www.graphviz.org/> 由几个命令行工具组成,它们允许
比uDraw(Graph)更多的导出格式。 这不仅包括静态图像格式
还可以输入 dia 等设计器程序。 有一个实用程序“twopi”用于创建一个
径向布局,如果您的图形接近真正的树,即您的
依赖扇出,但很少有节点与其他节点有共同的依赖关系。 有几个
可用的查看器,这些都无法帮助您浏览图表的结构:

点点
自带的显示工具dotty,相比uDraw(Graph)的优势在于可以自由
拖动节点,而不受布局分配的级别的限制。 什么时候
你的屏幕充满了边缘,拖动一个节点会给你一个很好的印象
该节点的边缘导致。 但是当你修改它时它也会丢失信息。
除此之外,它还是一个过时的 Xlib 工具。 它还显示一个恼人的小
在每条边的中间画圈,似乎没有办法摆脱它。

ZGR查看器
ZGR查看器http://zvtm.sourceforge.net/zgrviewer.html> 是可单独下载的
Java 查看器具有舒适的缩放和平移功能。 图表仅可见,不可见
节点的移动。 视图区域中有五个按钮,它们提供了额外的
花哨的半 3D 缩放变化,但与基本功能不同,它们可以
非常慢,具体取决于您的 Java 设置。 对于我的 Sun Linux Java,以下内容
给予了极大的推动:

导出 J2D_PIXMAPS=共享 USE_DGA_PIXMAPS=1

格拉帕
Grappa 是可单独下载的 Java 1.2 查看器。 没有包装外壳
脚本,jar 不包含清单,所有源都不包含主函数,以及
使用 appletviewer,它产生了两个高高的窗户,上面挂着一个“启动小程序”
消息,所以我不知道如何测试。 它可以在演示网站上作为
小程序。

选择一条边使其变为红色粗体,因此您可以手动将其另一端滚动到
在不丢失它的情况下查看。 除此之外还有缩放和删除节点
它似乎没有有用的功能。 它忽略有效的十六进制颜色
规格。

SVG SVG 是后端可以导出到的文件类型之一,它已经很老了。 但一些
浏览器仍然有问题。 仅将其与对象标签嵌入 Opera 时
缩放它,其他人剪辑它,这对于缩略图毫无用处。 当被视为
它自己的文档,只有 Opera 和 Konqueror 允许缩放,而 Firefox 可以缩放
只有标签。 即使标签是文本,也没有浏览器可以搜索它们。
IE6 没有任何线索,除非您安装插件。 一个专用的应用程序,例如
Inkscape,可以更好地为您服务。

HTML
这是一个简单的无序列表树格式,可以在任何浏览器中阅读。 你
应该有 JavaScript 和 CSS,允许折叠子树和查看颜色。 通常
你的图不会是一棵树,它是通过在每个子树中重复节点来解决的
需要,但作为第一次出现的链接,您可以在其中查看其所有属性。 到期的
对于 IE 有限的 Unicode 支持,垂直箭头用于包含关系,而不是
通常的虚线箭头。

文字的 图表
这是一种简单的基于缩进的格式,可用于任何文本查看器。 这个
意味着您通常可以研究比其他格式更大的图形。 在 Emacs 中你
可以使用这个小包装器使用轮廓和折叠进行非常强大的图形导航
模式:

(定义派生模式文本图模式大纲模式“图形”
(查看模式)
(set (make-local-variable 'outline-regexp) "*.")
(set (make-local-variable 'outline-level)
(lambda () (/ (- (比赛结束 0) (比赛开始 0) -1) 2)))
(set (make-local-variable 'outline-font-lock-keywords)
'(("^ *\\(?:{[az,]+} \\)?\\([^{\n]+\\)" (1 (outline-font-lock-face) nil t) )))
(setq imenu-通用表达式
'(((nil "^ *\\(?:{[az,]+} \\)?\\(.+?\\)\\(?:{[az,]+}\\)?$" 1))))

这些行可以在大括号之间使用逗号分隔的注释,除非您还给出
“-p,--plain”选项。 当这些出现在目标之前时,它们属于关系
与父,即前一行缩进较少。 当他们追上目标时,
它们与目标本身有关。 它们如下:

因为
当它出现在目标之前时,父级就是因为这个而构建的。 当它
之后,目标有一些固有的重建原因。

双向
这种依赖或包含是双向的。

包括
父级包含此文件。 此注释仅在同时显示时给出
依赖性。


这是一个虚假的目标。

重复
关于这个目标和它的孩子的信息早先已经给出了。

配置


如果你没有给出任何模式,makeppgraph 将开始使用它可以运行的所有节点
从makepp的日志中提取。 当给出一个或多个模式(使用“?”、“*”、“**”和/或
"[...]"),它将匹配文件系统中的那些,并对任何也在文件系统中出现的进行操作
日志。 对于这些,它默认选择“向上”,即所有依赖于
和/或包括其中任何一个和“向下”,即所有目标和/或来源,其中任何一个
它们取决于和/或包括。 (方向是比喻性的,因为图是
由于节点的宽度,最好从左“上”到右“下”显示。)

-A 文件名
--args-文件=文件名
--参数文件=f文件名
读取文件并将其解析为可能引用的空格和/或换行符分隔
选项​​。

-b
- 因为
--构建原因
如果某个节点因依赖关系而重建,则该边显示为红色。 唉
makepp 应用优化来检测目标何时需要重建,以便它
经常说不出来是哪个文件触发了重建。 如果节点是为一个
原因未归因于另一个文件,则该节点的边框为红色。 和
uDraw(Graph) 使用双边框代替,因为它不支持边框颜色。

-D
--依赖
绘制makepp确定的依赖关系图。 这是默认的
除非还给出了“-i,--includes”。

-d
- 下
- 向下
此选项仅在您提供一种或多种模式时才有意义。 那么它只会
选择匹配文件所依赖的目标和/或源,或者它们
包括。

-g
--graphviz
- 点
生成 Graphviz .DOT 文件,而不是默认的 uDraw(Graph) .udg 文件中。

-h
--html
制作浏览器 的.html 文件,而不是默认的 uDraw(Graph) .udg 文件中。

-?
- 帮帮我
打印出选项的简要摘要。

-I 目录
--包括=目录
--include-目录=目录
添加 目录 到 Perl 加载路径 @INC。

-i
--包括
而不是依赖(或附加“-D,--dependencies”)绘制一个
包含关系图。 这只会在需要时记录
待分析。 要获得完整的图片,您需要一个全新的完整版本。

-l 文件名
--日志=文件名
--日志文件=文件名
这款 文件名 是 makepp 写日志的地方。 它也可能是一个目录,其中有
文件名为 .makepp/日志 or 日志 将被搜索。 要从标准输入读取,您必须给出 -
作为一个 文件名. 如果未给出此选项,则默认为当前目录。

可以多次给出此选项,例如用于合并来自
“--traditional-recursive-make”。 但是您通过 makepp 隐藏的依赖项
邪恶的递归范式当然不能在这里出现。

-M 模块[=arg,...]
--模块=模块[=arg,...]
加载模块并导入它导出的任何函数。

-m 代码
--合并=代码
演出 代码 对于每个目标及其依赖项。 有关详细信息,请参阅合并
这个选项。

-o 文件名
--输出=文件名
将输出写入此文件。

-p
- 清楚的
不要使用颜色或虚线等属性。 这对以下情况特别有用
整洁的“-t,--text”输出。 在这种格式中,双向边将丢失
除非您将其与“-s,--separate-directions”结合使用。

-r 代码
--重命名=代码
演出 代码 对于每个目标及其依赖项。 有关详细信息,请参阅重命名
关于这个选项。

-s
--单独的方向
绘制两个单独的箭头,而不是每个双头箭头,以使它们更容易
点。

-t
- 文本
产生人类可读的 。文本 文件,而不是默认的 uDraw(Graph) .udg 文件中。

-u
- 向上
- 向上
此选项仅在您提供一种或多种模式时才有意义。 那么它只会
选择依赖和/或包含匹配文件的目标。

-V
- 版
打印版本号。

重写


本章中的技术对于获得合理大小的图形通常是必不可少的。 作为
它们被制定为 Perl 代码,了解该语言是有帮助的。 但是你应该可以
通过此处或画廊中的示例实现很多目标
<http://makepp.sourceforge.net/gallery/>.

重命名
如果给出了“-r,--rename”选项,这是发生的第一个名称重写。 为了
遇到每个名称,都会调用 perlcode。 它在 $_ 中获取文件名,并且可能会修改
它。 这通常是需要的,因为 makepp 记录完全限定的文件名,所以一个节点可以
很容易变成半个屏幕宽。

一方面,您可以将名称重写为“undef”或空字符串。 这将消除
图中的节点。 请注意,在第一阶段消除节点将破坏
如果此节点位于中间,则为依赖链。

您还可以将各种名称重写为同一个字符串,将它们全部强制为相同的
节点,它累积组合的依赖项和依赖项。

另一方面,您可以将名称重命名为(通常)较短的名称,以减少
节点的宽度,使用绝对文件名可以很宽。 有几个
包“Mpp::Rewrite”中的预定义函数,您的代码也在其中运行,您可以使用
为了这。 如果它们做了一些事情,它们就会返回 true,这样你就可以将它们组合起来,如下所示:

--rename='cwd( 1 ) || &home || &usr'

&cwd
电脑
电脑 数, 姓名[, 分隔器]
从路径的开头删除当前工作目录。 有了号码,也
用正确数量的替换父目录 .. /
目录(如果适用)。 在这种情况下,你可以给一个替代 姓名, 像一个
堆积了 ':' 而不是 '..' 和另外一个替代 分离器 像 '' 代替
的 '/'。 在第一种情况下,您可能会得到 :/:/a/b,在第二个更短 ::a/b
而不是 ../../a/b. 如果您从
相邻的树木。 或者你有一个 SRC 大部分操作所在的目录,因此您
在那里调用 makeppgraph,但也想查看与其他目录的关系。

如果你没有给出“--rename”选项, &cwd 是默认值。 如果你不想重命名,
你可以给一些 代码 就像“--rename=1”什么都不做。

&dir
这是图形复杂性的一个很好的降低器。 它将每个文件减少到它的
目录。 这相当于问题:“来自哪个目录的文件取决于文件
来自哪个其他目录?”请注意,虽然依赖图始终是非循环的
(否则 makepp 将不知道从哪里开始构建),这种减少的情况并非如此
看法。 例如如果 目录 1/a 依赖于取决于 目录2/b目录 2/a on 目录1/b 这将显示为
之间的相互依赖 dir1dir2. 由于循环图没有明显的起点
点,布局可能很奇怪。

与本节中的其他功能不同,这与其他功能无关。 所以
您可能不想在逻辑上组合它:

--rename='&dir; &cwd || &家'

&家
将您的主目录替换为 ~/.

&makepp
将 makepp 安装目录替换为 |米|.

&suf
SUF
这也是图复杂性的一个很好的降低器。 它减少了每个文件
星号的后缀和该后缀。 所以你可以看到哪些类型的文件依赖
关于其他种类。 参数为 0 时,它会留下第一个字符
目录,前提是它是“/”、“~”或“|”之一(如由 &home 或 &usr 放入的,如果您
先调用那些)。 有一个积极的论点,它留下了许多目录级别
一开始。 使用否定参数,它删除了许多目录级别
结束。 因此对于 /a/b/c/d/e/xy 你得到:

&suf *.y
suf 0 /*.y
suf 1 /a/*.y
suf 2 /a/b/*.y
suf -1 /a/b/c/d/*.y
suf -2 /a/b/c/*.y

对于亲戚 a/b/c/d/e/xy 你得到:

&suf *.y
后缀 0 *.y
suf 1 a/*.y
suf -1 a/b/c/d/*.y

&usr
/, /usr, /usr /l奥卡, /usr /X11, /usr /X11R6, /usr /X11R7 or /opt,对于任何
目录 bin, etc, i包含, lib or s野兔,这些词的首字母是
连接在条形之间。

例如 /usr /l本地/b在/foobar 成为 |ulb|foobar or /usr /i包含/净/if.h 成为
|ui|net/if.h. 请注意,“l”在两个字母之间时代表“local”和“lib”
作为最后一个字母。

合并
如果给出“-m,--merge”选项,这是发生的第二个名称重写。 这个
API仍在开发中! 目前目标是通过 $_ 和依赖
作为论据。 如果 perlcode 返回一个值,该值将同时替换目标和
依赖,将它们合并为一个节点。 一些预定义的函数可以帮助您:

c2o 对于任何 C/C++ 源代码和结果 .o 文件,将它们合并为一个节点,通过添加到
源路径后缀为“>o”,例如 some/where/foo.cc>o,即使 .o 文件在
另一个目录。

exe 对于任何 .o 文件和生成的具有相同 notdir basename 的可执行文件,但没有
后缀或带有 。可执行程序, 将它们合并为一个节点,方法是在 .o 文件中。
这目前不能与 2.

x2 对于任何一对具有相同名称的文件,通常是发布到
中央目录,通过添加将它们合并为一个节点 *2 到依赖。

环境


Makeppgraph 查看以下环境变量:

$MAKEPPGRAPHLAGS
此环境变量中的任何标志都被解释为命令行选项之前
任何显式选项。 引号的解释就像在 makefile 中一样。

使用 onworks.net 服务在线使用 mppg


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad