无法部署预编译的头文件(.gch)

时间:2018-02-02 11:06:19

标签: c++ gcc boost precompiled-headers g++4.8

当我尝试使用boost标头部署gcc生成的预编译标头时,请帮助我warning: pch.hpp.gch: not used because '__STDC_IEC_559__' not defined出现吗?

这是我的玩具模型。 档案pch.hpp

#include <vector>
#include <string>
#include <iostream>

#include <boost/bind.hpp>

及其互补的pch.cpp

#include "pch.hpp"

要生成预编译头,我调用以下命令: g++ -std=c++11 -c -x c++-header pch.cpp -o pch.hpp.gch, 其中gcc的版本为4.8.2

现在,有bla.cpp文件,我希望最终使用预编译的头文件:

#include "pch.hpp"

int main() {
   #ifdef __STDC_IEC_559__
   std::cout << "__STDC_IEC_559__ is defined by the compiler as " << __STDC_IEC_559__ << std::endl;
   #else
   std::cout << "__STDC_IEC_559__ is NOT defined by the compiler as " << __STDC_IEC_559__ << std::endl;
   #endif

   std::vector<std::string> vs {"One", "Two", "Three"};
   for (auto&& v : vs) std::cout << v << ", ";
   std::vector<int> vi {1,2,3};
   for (auto&& v : vi) std::cout << v << ", ";
   std::cout << '\n';
   return 0;
}

我用这个命令编译它: g++ -std=c++11 -Winvalid-pch -H bla.cpp

输出结果为:

bla.cpp:1:19: warning: pch.hpp.gch: not used because `__STDC_IEC_559__' not defined [-Winvalid-pch]
 #include "pch.hpp"
                   ^
x pch.hpp.gch
. pch.hpp
...

因此,代码编译,但未部署预编译头。如果我运行已编译的代码,我会看到以下输出:

__STDC_IEC_559__ is defined by the compiler as 1
One, Two, Three, 1, 2, 3, 

有没有办法利用我的预编译头?我必须以不同的方式生成它吗?..

注意如果我的pch.hpp中没有boost头,即只有来自std lib的那个,则部署预编译头。

提前谢谢! 奥莱克西

0 个答案:

没有答案