在Visual Studio中通過moc給Qt配置先行編譯標頭檔(Predefined Headers)

來源:互聯網
上載者:User

我建立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的協助:

Usage: moc [options] <header-file><br /> -o<file> write output to file rather than stdout<br /> -I<dir> add dir to the include path for header files<br /> -E preprocess only; do not generate meta object code<br /> -D<macro>[=<def>] define macro, with optional definition<br /> -U<macro> undefine macro<br /> -i do not generate an #include statement<br /> -p<path> path prefix for included file<br /> -f[<file>] force #include, optional file name<br /> -nw do not display warnings<br /> @<file> read additional options from file<br /> -v display version of moc

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.