QT預編譯標頭檔案

2021-08-28 21:28:07 字數 1774 閱讀 6833

我建立qt工程的方法是先用qcreator建立乙個簡單的程式,設計一些ui,然後用qmake把這個pro工程檔案轉成visual studio的vcproj工程檔案。

這樣的vcproj檔案是沒有使用預編譯頭的,當然可以很容易地的去visual studio中修改設定,這裡我建立了乙個名為pch.h的檔案作為標頭檔案。現在碰到的問題是,qt使用moc來生成cpp檔案並加入編譯之中,比如你有乙個mainwindow.h,然後moc會生成乙個moc_mainwindow.cpp,如果這個cpp檔案不引用指定的預編譯標頭檔案,則會出現這樣的錯誤:

fatal error c1010: unexpected end of file while looking for precompiled header. did you forget to add '#include "pch.h"' to your source?

當然可以自己手動的將 #include "pch.h"加入該檔案的前面,但是這個moc_mainwindow.cpp是動態生成的,在檔案頭部有乙個很大的警告:warning! all changes made in this file will be lost!那如何讓其自動加入pch.h呢?在網上查閱了一些英文的資料,居然沒有人寫。下面是我的方法:

我先進入命令列,然後用moc -help檢視moc的幫助:

[xhtml]view plain

copy

print

?usage: moc [options] 

<

header-file

>

-o<

file

>

write output to file rather than stdout  

-i<

dir>

add dir to the include path for header files  

-e                 preprocess only; do not generate meta object code  

-d<

macro

>

[=<

def>

]  define macro, with optional definition  

-u<

macro

>

undefine macro  

-i                 do not generate an #include statement  

-p<

path

>

path prefix for included file  

-f[<

file

>

]         force #include, optional file name  

-nw                do not display warnings  

@<

file

>

read additional options from file  

-v                 display version of moc  

這樣我就將 "-fpch.h" 放入mainwindow.h的custom build step設定的comman line引數中。但是原先的包含的mainwindow.h會被覆蓋,這樣我再加入-fmainwindow.h,問題解決。因此最終在moc後面加入的引數是 「-fpch.h -fmainwindow.h」。

預編譯標頭檔案

stdafx.h標頭檔案的作用 今天在改乙個很大的程式,慢慢看,慢慢改。突然發現乙個.c檔案,裡面什麼也沒有,就幾個標頭檔案,我一看,我靠,這不是把簡單的問題搞複雜了嗎,隨手刪掉那個c檔案。結果不能編譯了,我靠 fatal error c1083 cannot open precompiled he...

預編譯標頭檔案

一 預編譯標頭檔案使用經驗 如果預編譯標頭檔案被正確使用時,它確實大大提高我們程式設計的效率 你工作中,有多少時間是在等編譯完成?很多吧,這個時候一般都很無聊,無奈,浪費時間 但是他太容易用錯了.下面是幾種常見的錯誤用法.1 在預編譯標頭檔案裡include自己的標頭檔案 當然,如果你的標頭檔案不經...

預編譯標頭檔案

預編譯標頭檔案 今天在改乙個很大的程式,慢慢看,慢慢改。突然發現乙個.c檔案,裡面什麼也沒有,就幾個標頭檔案,我一看,我靠,這不是把簡單的問題搞複雜了嗎,隨手刪掉那個c檔案。結果不能編譯了,我靠 fatal error c1083 cannot open precompiled header fil...