在VC空项目里添加自定义的预编译头(或关于:无法打开预编译头文件:“Debug/xxx.pch”: No such file or directory的问题的解决)
转自:http://www.cppblog.com/silekey/articles/87108.html
注:MFC默认生成的框架暗地里添加了很多编译、链接参数,当我们想自定义自己的框架时若对这些编译参数不熟悉则会引发很多问题。
关键字:VC空项目 自定义 预编译头 .pch 无法打开预编译头文件:“Debug/xxx.pch”: No such file or directory
这里有个概念要先说明:
1>代码里面至少要有个CPP是用于创建预编绎头的.
2>其它CPP则都是选使用预编译头的.
3>预编译头是防止一些重复编译来达到加快编译速度的一个技术.
4>大多数人(其实只有我一个人,其它人没问过)碰到这个问题其实是他不知道每个.cpp的文件是可以并必须要分别设置预编译头参数的!!!!
OK废话不多说,先建立一个空白项目.
自已添加文件CPP文件并写入main;
再添加Config.cpp 及 Config.h 用于我们的预编译头,在工程里设置:
注:编译是以.cpp为单位编译的,所以预编译头文件必须依赖一个.cpp文件才能通过编译.
然后我们编译获得以下两个错误:
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。
fatal error C1083: 无法打开预编译头文件:“Debug\tMain.pch”: No such file or directory
把相应的错误翻译下来应该是这样的:
fatal error C1010: 老大,你说过这个.cpp文件是需要用预编译头的,没找到就罢工!
fatal error C1083: 全都是使用预编译头的,哪来的创建预编译头的cpp文件哪!
对不起,没法办给你变出来.
第一个错误是由于我们有个.cpp文件里面没有加入config.h
第二个错误就是没有创建预编译头的CPP文件,编绎器没办法了.解决方式就是在config.cpp的属性里把该文件设置为:
其实明白了,这东西超简单,但是在不知道之前超烦啊,都不知这个小问题搞了我多久.以前都只是设置为不使用该头.后来发现这东西确实不错!