で完全にコンパイルされるプロジェクトがありますgcc
が、GreenhillsIntegrity環境ではコンパイルできません。
問題は次の3つのファイルに要約されます。
MyVector.cpp // contains function testVector
MyVector.hpp // contains template vector<>
SomeFile.cpp
MyVector.hpp
ベクトルのtemplate-classがMyVector.cpp
含まれ、のテンプレートとは関係のないテスト関数が含まれていますMyVector.hpp
。
さて、でMyVector.hpp
のvector
テンプレートを使用しているとSomeFile.cpp
、どういうわけか、関数testVector
はに注入されSomeFile.cpp
ます。での使用をやめると(もちろん、まだ使用vector
していますが、テンプレートをインスタンス化していないだけです)、完全に機能します。SomeFile.cpp
#include
さらに、関数に警告を挿入すると、コンパイル時にtestVector
コンパイラーが警告を表示しました。SomeFile.cpp
SomeFile.cpp
さらに、で物事を変更すると、ビルドシステムが再コンパイルされMyVector.cpp
ます。
testVector
関数をから削除MyVector.cpp
して新しいものに移動すると、NewFile.cpp
コンパイルされます。
いいえ、誤ってファイルを含めなかっcpp
たので、正直に言って、ファイルを再確認し、grep
すべてのソースコードを編集しました。
何が起こっているのかわかりません。手がかりがあれば嬉しいです。