先說解決方法:
打開項目屬性頁->Qt Meta-Object Compiler->moc.exe,將Force Include項自動生成的stdafx.h;../../%(Filename)%(Extension)清空,然後在Prepend Include填入stdafx.h
下面我們來說一下怎樣的操作纔會出現這種報錯
.\GeneratedFiles\Debug\moc_qcustomplot.cpp(10): fatal error C1083: 無法打開包括文件: “../../qcustomplot.h”: No such file or directory
第一步:在使用QT生成工程時,如果在配置工程時勾選了使用預編譯頭文件
第二步:源代碼文件不是直接在工程目錄下或者添加了一些開源庫的源碼,比如像我添加了qcustomplot開源庫。
稍微仔細看一下../../%(Filename)%(Extension)這個就會明白,這個參數強制限制的使moc_XXX.cpp中添加對應頭文件的格式爲:“../../XXX.h”,即必須對應的頭文件必須在工程目錄下
這個時候編譯就會出現報錯.\GeneratedFiles\Debug\moc_qcustomplot.cpp(10): fatal error C1083: 無法打開包括文件: “../../qcustomplot.h”: No such file or directory,
當然可能還會先報1>qcustomplot\qcustomplot.cpp(30133): fatal error C1010: 在查找預編譯頭時遇到意外的文件結尾。是否忘記了向源中添加“#include "stdafx.h"”?,這種情況有兩種方法:
1. 老實的在.cpp文件的最頂端添加#include "stdafx.h"
2. 在解決方案資源管理器中選擇qcustomplot.cpp後右鍵單擊,修改屬性頁,修改爲不使用預編譯頭,這個方法可以避免部分開源代碼在添加了stdafx.h後出現大量的報錯或者衝突