|
前一段搞了一个项目,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与均可以可以直接编译通过了。 |
|