Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305174
  • 博文数量: 79
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 789
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(79)

文章存档

2024年(1)

2023年(1)

2022年(2)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: LINUX

2016-05-12 17:54:25

英文官网:


不要让语言成为认识这个世界的障碍

Cscope是一个工具, 用来探测繁多而复杂的代码. 可以节省大量的时间而不是手动的从源码中去挖信息(尤其是针对大型的数据).

在该教程中, 将会介绍如何安装Cscope到大型项目. 我们会使用linux内核代码作为我们的例程. 对于其他的大型项目如C++和Java基本步骤都是类似的.
1, 获取源码. 第一步获取源码, 可以从linux的官网上下载源码, 接下来的部分我会假设你已经下载了源码, 并且安装到了/home/jru/linux-2.4.18文件夹下
提示: 确定你有足够的磁盘空间. 内核单独30MB. 源码是150MB. Cscope数据库会需要额外的20到100MB的空间. (取决于你需要包含的内核代码). 可以把Cscope数据库放在不同的磁盘上.
2, 确定你需要把你的数据库放在哪个磁盘上. 我会假设你使用/home/jru/cscope作为数据库路径.
3, 配置cscopes.files,确认哪些文件需要被扫描. 对于一些工程, 你可能希望包含所有在工程路径中的文件. 这种情况下, 可以直接掠过下面的步骤, 只是使用cscope-R在工程的根目录下建立Cscope数据库.但是如果有一些代码你希望添加, 并且你的项目使用C++或者Java. 这时你需要配置一个cscope.file的文件, 里面可以配置你希望包含的路径.
或许会使用绝对路径(只少计划使用编辑器来使用Cscope), 这样你可以使用数据库而不单单在自己创建的文件夹中. 接下来首先到根目录下,以便获取到绝对路径.
对于大多数工程, 命令很简单.

cd /
find /my/project/dir -name '*.java' >/my/cscope/dir/cscope.files

对于linux 内核来说, 会稍微复杂一些. 我们需要排除那些在docs和脚本文件中的代码. 包括为各种芯片写的架构集成代码, 但是需要保留x86架构的部分(我猜你可能对这个会感兴趣). 另外, 我们需要排除所有的驱动代码.(他们数量庞大, 可能挤爆数据库, 拥有重复的定义也会增加查找的难度. 如果对这部分代码感兴趣, 注释掉下面相应的部分, 或者只输出感兴趣的部分):
find  $LNX                                                                \
    -path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o               \
    -path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \
    -path "$LNX/tmp*" -prune -o                                           \
    -path "$LNX/Documentation*" -prune -o                                 \
    -path "$LNX/scripts*" -prune -o                                       \
    -path "$LNX/drivers*" -prune -o                                       \
        -name "*.[chxsS]" -print >/home/jru/cscope/cscope.files

这些代码写起来会有些费劲.对于大型的工程来说拷贝一个会比自己写一个要更加便捷.
4, 处理Cscope数据库.现在来处理Cscope数据库:
cd /home/jru/cscope     # the directory with 'cscope.files'
    cscope -b -q -k
-b 标签使Cscope只建立数据库, 并不加载Cscope GUI. -q
阅读(1262) | 评论(0) | 转发(0) |
0

上一篇:[8] ROS下使用GPS模块

下一篇:[概要] move_base

给主人留下些什么吧!~~