6

QT4 GUI を含む ROS パッケージがあります。私のコードはフォルダー Project_name/src/test/*.cpp にあり、私のインクルードは Project_name/include/test/*.h

一部のヘッダー ファイルにはクラスに Q_OBJECT が含まれているため、一部の qt4 moc を作成する必要があります。

cmake ファイルでを試しました set(CMAKE_AUTOMOC ON) が、 /include/test/ フォルダーを検索しないようです。AUTOMOC は、ソース ファイルで moc_ * *.cpp ファイルを検索するか、ヘッダー ファイルで Q_OBJECT を調べることによって機能すると述べています。

また、ソース ファイルに a を含めようとしmoc_***.cppました (たとえば、/src/test/a.cpp)。そのため、検索しましa.hたが、 で見つかりませんでしたinclude/test/a.h

include/ フォルダーが次のように追加されるため、クラスから Q_OBJECT を削除すると、コンパイルが成功することに注意する必要があります。 include_directories( include ${catkin_INCLUDE_DIRS} )

最後に、QT4_WRAP_CPP を使用しようとしましたが、何らかの理由で mocs を見つけることができず、リンクが失敗しました (ただし、cmake ファイルで同じパラメーターを持つ別のプロジェクトでは動作します:/)

編集: 解決策が見つかりました。cpp ファイルに次のように追加されました。

#include "../../include/test/moc_a.cpp"

インクルード/テストで.hを見つけました。

それは正しい方法ではないと何かが私に言っていますが:P

4

1 に答える 1