Boostヘッダーをプリコンパイルしようとしています。
最初の実験 - std:: ヘッダーを使用。ファイル std.hpp を作成します。
#include <vector>
#include <iostream>
// And other std:: headers
その後:
g++ std.hpp
/usr/include/c++/4.4.5 に std.hpp.gch をコピーします。
そして、テストプログラムを書きます:
#include <std.hpp>
int main() {
std::cout << "Hello, precompiled world!" << std::endl;
return 0;
}
正常に動作します。
次に、Boost ヘッダーをプリコンパイルしてみます。
boost.hpp ファイルを作成します。
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/karma.hpp>
その後:
g++ boost.hpp
/usr/local/include/boost に boost.hpp.gch をコピーします。
そして、テストプログラムを書きます:
#include <boost/boost.hpp>
int main() {
// Some code...
return 0;
}
しかし、エラーが発生しました:
main.cpp:2:33: error: /usr/local/include/boost/boost.hpp: No such file or directory.
実験のために試してください:
#include </usr/local/include/boost/boost.hpp>
int main() {
// Some code...
return 0;
}
同じエラー。
boost.hpp.gch を別の場所にコピーしてみてください - 同じエラーです。
ファイル boost.hpp を同じ場所に配置すると、正常に動作します (したがって、パスに問題はありません)。
ls /usr/local/include/boost | grep boost
boost.hpp
boost.hpp.gch
そのため、コンパイラは boost.hpp ヘッダーを使用します。しかし、コンパイラがプリコンパイルされた boost.hpp.gch を認識しないのはなぜですか??