一套代码在VC与GCC公用的一个小技巧
前一段搞了一个项目,Server需要跨平台,client使用MFC。client为了不牺牲编译速度,打开的预编译头选项,确实速度相差好多。
这样在两个工程引用公共的代码的代码的时候会比较麻烦。
和开始wishel 的之前的帖子提到的一样,通过一些宏开关进行控制,同样会出现#endif的问题。
后来解决的办法是,为需要跨平台的Server工程目录建立一个空的stdafx.h文件,并在工程中引用这个空的stdafx.h文件,
这样Server编译公用的文件的时候,会引用到自己目录下这个空的stdafx.h,编译可以顺利通过。
Client编译的时候使用的是自己目录下正常的预编译头文件stdafx.h也没有问题。
最近又遇到了另外的一个问题,即有一些公共文件是通过工具生成的,比如winston之前提过的Protobuf,
不支持将文件编译成MFC支持的开关,这样每次重新生产新的文件的时候,
都需要向新生成的cpp文件中手工添加#include "stdafx.h",这显然比较繁琐。
于是再多次尝试之后,得出一个更为简单的解决办法,假设需要生成的文件分别为generated.h,generated.cpp。
在Client工程去掉generated.cpp,新增文件Wapper.cpp,里面的增加两行代码。
#include "stdafx.h"
#include "generated.cpp"
Server工程不用做任何改变。
这样每次新生成文件的时候,不用做任何修改就client与Server与均可以可以直接编译通过了。 我在linux下习惯用Eclipse。modern有没有遇到这样的问题,linux下编码是utf8,所以程序中的中文注释在vc里显示乱码。或者反之也一样,vc的ucs2到了linux也显示不出。有好的解决办法么? 我们现在的项目主要开发工作都是在windows下进行,linux一般就是移植。
因此强制将windows下的文件转成UTF8编码,貌似linux就可以看中文注释了。 哈哈。我现在在锻炼纯英文注释。
vs2005开始使用utf8编码编辑及保存文件了。
vs2005开始使用utf8编码编辑及保存文件了。工具-> 选项-> 文本编辑器-> 自动检测不带签名UTF-8编码
[ 本帖最后由 shenming 于 2009-11-20 00:00 编辑 ] 原帖由 shenming 于 2009-11-19 23:43 发表 http://www.acejoy.com/bbs/images/common/back.gif
vs2005开始使用utf8编码编辑及保存文件了。
工具-> 选项-> 文本编辑器-> 自动检测不带签名UTF-8编码
太好了,哈哈。谢谢:handshake 在 VS 里面,可以对单个文件选择不使用预编译头,不用对这个文件加包装代码。
页:
[1]