codeblocks + MinGW 以及vc 使用预编译头文件的方法

MinGW编译器:

1.打开工程文件,在工程文件浏览其中,在你要设置为预编译的头文件上,点击鼠标右键,选择“属性(properties)”
  你会看到一个多页面的属性框,选择“构建(build)”页面,将“编译文件(complie file)”选项勾上,其默认状态为没有勾

2.从菜单->工程(project)->构建选项(build options)
  会跳出一个多页面属性框,在此你选择工程全局设置(project name),注意不是调试(debug)或者发布(release),然后“编译器设置(complier setting)”页面,从该页面中选择“其它选项(other option)”页面,在该页面的的文本编辑框中加入-Winvalid-pch 和 -include 你的头文件名(例如:-include opencv_pch.h)

 

-Winvalid-pch 意思是对预编译头文件有效性进行检查并提示。

-include xxx.h 意思是所有cpp文件隐含的include了xxx.h文件,也就是说在cpp文件中没有include xxx.h,但是一样可是使用xxx.h中声明的内容。

 ---------------------------------------------------------------------------------------

VC编译器:

1、创建需要预编译的头文件,比如wx_pch.h,头文件中务必有防止重复包含的宏,例如:

#ifndef STDAFX_H
#define STDAFX_H

 

2、然后加入.cpp文件,在文件属性中,取消LINK,只保留编译。因为这个文件只生成pch文件,不生成obj文件了。提高编译优先级为2(随便一个小数字),默认值为50,这样我们保证这个文件先于其他任何文件先进行编译

并且为该文件指定单独编译配置:

$compiler /nologo $options $includes /c $file /Ycwx_pch.h


3、在工程的全局build option中再加入编译选项:/FI"wx_pch.h"
/Yu"wx_pch.h"

/Fp"wx_pch.pch"

/FI的意思是命名强制包含文件 相当于MinGW(gcc)的-include

/Yu的意思是使用指定的头文件

/Fp的意思是指定预编译头文件的名称,为好为debug和release分别指定,否则切换debug和release时会重编译头文件

在使用预编译文件后,如果程序所链接的库发生变化,而且这些库是预编译头文件需要用到的,那么会类似出现下面的错误:

vc100.pdb不是创建此预编译头时使用的 pdb 文件。如果出现这种情况,需要对整个项目(当前配置如debug)rebuild就好了。

 ---------------------------------------------------------------------------------------

http://blog.sina.com.cn/s/blog_53b45874010177do.html

原文地址:https://www.cnblogs.com/findumars/p/5110855.html