当前位置:硬件测评 > vs2010中custombuild_vs2010通用属性模板

vs2010中custombuild_vs2010通用属性模板

  • 发布:2023-09-26 01:59

转载:http://www.sychzs.cn/crunchyou/archive/2012/11/30/2796160.html

用vc很多年了, 前年在搞libcomcomcpp时, 发现了该项目建的的工程设置里面有个很有趣的vsprops, 如下图:

以前从来没有这样做过, 当时研究了一下, 发现这是个很好的技巧, 可以避免多个工程往复相同的设置.

当时还仿照这个方法在自己的工程中, 做了一个便于包含第三方库的设置.

可能当时印象不是很深刻, 加之这两年来, 没做多少编码工作, 转眼过了两年, 对于这个技巧就忘了. 今次又重新编码, 需要在多个工程中重复很多相同的设置, 于是想起来vs提供了这样一个功能. 但怎么做的却忘了. 还是杜娘好,问了一下, 收到下面的这篇blog. 转载留下, 避免以后忘记.

多谢原作者!

(转)创建project property sheet(.vsprops)减少工程设置错误和重复设置

举个例子,我最近在学习libevent代码,想在windows下跑一些例子,我编译了libevent生成了libevent.lib文件,那我这些例子要编译-->运行的时候,必须把libevent.lib和ws2_32.lib加到工程的“Add Dependencies”中,一个例子还好说,如果10几个例子,每个小例子一个工程,那就要加10几遍,而且要考虑到debug和release的区别...? ??? 并且每个例子还要加上include所需的所有路径,加起来很繁琐,一个不小心忘记了,或者写错了,难免增加烦恼...? ??? 下面我教大家如何创建project property sheet(vsprops)减少工程的重复设置,最终只要设置一次就可以了,具体如下:? ??? 1.打开Property Manager窗口? ????? view-->Property Manager? ??? 2.右键我们的第一个工程-->Add new project property sheet,我们要新建的这个property sheet是整个solution共享的、最基础的,所以我们一般命名为common:? ? ??? 点击ADD,现在你就可以看见我们创建好的common.vsprops文件了:? ? ??? 2.现在我们就可以编辑common.vsprops了,双击common就可以了,像编辑普通的工程设置一样就可以了,接下去我添加额外的include路径和lib:? ? ? ??? 3.编辑完成后,切换回solution explorer,右键查看工程的属性:? ? ??? 通过common.vsprops我们还可以增加统一的宏、custom build step,而再创建其他工程的时候只要把common.vsprops添加到新的工程设置中即可...? ??? 不错的一个技巧吧?\(^o^)/~

http://www.sychzs.cn/bugrunner/article/details/6684904

?

? 对于D3D中.fx文件进行编译可以直接使用D3D Tools中的fxc.exe,或是在程序运行后加载.fx文件的时间调用fx编译器进行编译,但这样种种不便。受CUDA文件编译设置的启发,同样可以对.fx进行custom build设置,进而直接调用fxc.exe进行编译。

? ? ? 首先,对于.fx文件,右键->Properties,进行属性设置;Tool选为:Custom Build Tool

然后Custom Build Step -> General -> Command Line, 输入下述语句(直接复制即可):

"$(DXSDK_DIR)Utilities\bin\x86\fxc.exe" /Gec /T fx_2_0 /Fc$(InputDir)\$(InputName).txt /Fo$(InputDir)\$(InputName).fxo %(Filename).fx $(InputPath)

Outputs中输入如下(否则不能激活compile菜单):

$(InputName).fxo

其中,前半部分指定了D3D SDK中fxc.exe编译程序所在的位置,中间的即为fxc相应的一些参数,可以根据自己需要进行相应的更改,后边的即为相应的输出以及寻找源文件的方式等。其中的路径方式可以参考MSDN的相关说明:http://www.sychzs.cn/en-us/library/c02as0cs(v=vs.80).aspx

如此一来就可以直接对.fx进行编译并查错了,可以直接在Output窗口中双击定位到相应的错误行:

而且还可以在Custom Build中加入其它一些自己想要的东西,比如统计一下各种ASM指令的数目等用来进行shader的性能分析等:

注:上述截图中的VS工程为D3D SDK中的Sample:IrradianceVolume_2005

现象是这样的: 在VS2010的环境中,编译QT代码。每次很小的代码改动,或者不改动,仅仅是点击Debug/Release运行,都会重新生成moc文件,然后编译,非常耗时。 在网上搜索了很多答案,都不行。设置 INCREMENTAL 链接也没用似乎就是VS无法跟踪moc生成的结果,每次都认为是代码出现的新的文件。 (PS:每次全工程编译半个小时,好烦)

经过反复尝试,终于解决了: 首先,说一下有问题的配置, QT的代码通常是头文件,右键头文件,选择properties-》Custom Build Tool ->General 页里的配置如下:

Command line:

$(QTDIR)\bin\moc.exe ".\Qt\ConfigDialogs\%(Filename).h" -o ".\Qt\ConfigDialogs\moc_%(Filename).cpp"

这个配置是常规配置。 Description:   Compiling %(Filename).%(Extension) using MOC 这个配置无所谓,只是为显示。

Output:

moc_%(Filename).cpp;%(Outputs)

问题就出现在这里,这个路径虽然也正确,代码都能正常输出和编译。

这个配置,默认QT会在.h文件的相同路径下生成moc文件,但是,每次编译时VS都找不到? 由于代码比较多,Qt相关代码都在“Qt”这个文件夹下,下面还有几级子目录。

于是:修改为下面的路径,问题就解决了。

.\Qt\ConfigDialogs\moc_%(Filename).cpp;%(Outputs)

【注】 \Qt\ConfigDialogs\ 是在vcxproj文件所在路径下面的子目录。

相关文章