小编Dav*_*ben的帖子

如何使用sed只替换文件中的第一个匹配项?

我想在任何现有的#includes之前用额外的include指令更新大量的C++源文件.对于这种任务,我通常使用带有sed的小bash脚本来重写文件.

如何sed更换文件中第一次出现的字符串而不是替换每次出现?

如果我使用

sed s/#include/#include "newfile.h"\n#include/
Run Code Online (Sandbox Code Playgroud)

它取代了所有#includes.

也欢迎提供相同建议的替代建议.

command-line text-processing sed

195
推荐指数
11
解决办法
32万
查看次数

如何在开发过程中检测代码重复?

我们有一个相当大的代码库,400K LOC的C++,代码重复是一个问题.有没有可以有效检测重复代码块的工具?

理想情况下,这将是开发人员在开发过程中可以使用的东西,而不是偶尔运行以查看问题所在.如果我们可以将这样的工具与CruiseControl集成在每次签入后提供报告,那也很好.

我前段时间看过Duploc,它显示了一个漂亮的图形,但需要一个小型的环境来使用它,这使得自动运行它相当困难.

免费工具会很好,但如果有一些好的商业工具我也会感兴趣.

c++ code-duplication

75
推荐指数
5
解决办法
3万
查看次数

如何在VS2005中提高大型C++应用程序的链接性能

我们有相当大的C++应用程序,它由Visual Studio 2005中的大约60个项目组成.目前在Release模式下链接需要7分钟,我想尝试减少时间.有没有改善链接时间的提示?

大多数项目都编译为静态库,这使得测试更容易,因为每个项目都有一组相关的单元测试.似乎静态库的使用阻止VS2005使用增量链接,因此即使打开增量链接,它也会每次都进行完整链接.

将DLL用于子项目会有什么不同吗?我真的不想通过所有的标题和添加宏来导出符号(甚至使用脚本),但如果它会做一些事情来减少7分钟的链接时间,我一定会考虑它.

出于某种原因,使用命令行中的nmake稍快一些,并且在Linux(使用GCC)上链接相同的应用程序要快得多.

  • Visual Studio IDE 7分钟
  • Visual C++使用命令行中的nmake - 5分钟
  • Linux上的GCC 34秒

c++ visual-studio-2005

24
推荐指数
3
解决办法
1万
查看次数

如何将TDD方法与VisualStudio集成?

我有兴趣听听使用TDD和使用Visual Studio 2005(专业版)的C++单元测试的经验

首先是一些背景.我们有一个相当大的项目,其中大部分是在Linux上使用CppUnit开发的,用于单元测试.该项目分为几个库,每个库都有自己的一组测试.我有一个简单的脚本编译库,编译测试套件然后运行测试.因此,在对代码进行更改后,我只需从命令行运行"test"并运行测试.

现在,大多数开发人员都在Windows上使用Visual Studio 2005来开发此产品.当然,他们仍然可以使用nmake从命令行运行测试,但需要额外的步骤,我宁愿拥有更加集成的解决方案.

所以我的问题有两个部分.

首先,在大型代码库上布置测试代码的最佳方法是什么?在解决方案中创建多个测试项目是否正常,每个库一个?

其次是否有任何工具可以将CppUnit测试集成到Visual Studio中?如果设置了依赖关系,运行测试项目将运行测试,但目前结果仍然出现在命令窗口中.

c++ tdd unit-testing visual-studio

11
推荐指数
1
解决办法
965
查看次数

如何管理源控件中由多个开发人员更改的.vcproj文件?

我们使用Subversion作为我们的源代码控制系统,并将VisualStudio项目文件(vcproj)存储在源代码控制系统中,这是我认为的正常情况.使用Subversion我们不使用任何形式的文件锁定,因此如果两个开发人员同时处理同一个项目并且都将文件添加到项目或更改设置,则第二个要提交的人必须合并更改.

你如何合并这些变化?

vcproj文件只是文本文件,因此可以手动编辑它们,但它们不适合手工编辑,特别是初级开发人员.

我能想到的方法是

  • 从svn获取最新版本并手动重新添加所有本地更改
  • 手动编辑文件以解决自动合并中的任何冲突
  • 实施某种形式的锁定方案以防止同时发生变化
  • 在开发人员之间达成协议,以便他们不会同时进行更改

目前我们正在使用手动重新添加所有更改的第一个选项,但这非常耗时,我想知道是否有更好的方法.

对于源文件,自动合并功能在大多数情况下都可以工作,我们不会遇到很多冲突.

svn merge visual-studio

8
推荐指数
1
解决办法
2941
查看次数

使python程序可执行

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "single.py"}],
    zipfile = None,
)
Run Code Online (Sandbox Code Playgroud)

在这个py2exe的安装文件中,它说single.py是我放置程序名称的地方?

py2exe

4
推荐指数
1
解决办法
4252
查看次数

如何确定安装了哪个版本的Direct3D?

我们有一个需要使用Direct3D的应用程序.具体来说,它至少需要DirectX 9.0c版本4.09.0000.0904.虽然这应该出现在所有较新的XP机器上,但它可能不会安装在较旧的XP机器上.我如何以编程方式(使用C++)确定它是否已安装?我希望能够向用户提供Direct3D无法使用的信息消息.

c++ windows direct3d

3
推荐指数
1
解决办法
6648
查看次数