0

これはかなり簡単だと思いますが、私は CMake (または Qt) に精通していないことを認めているので、ここに問題があります。

Qt Designer で (.uiファイルを使用して) 作成されたフォームがあります。このフォームに基づく 2 つのクラスが作成されました。どちらのクラスにも重複したコードがたくさんあります。formname.uiそこで、その共通コードを管理するために多重継承方式でファイルを継承した基底クラスを作りたいと考えました。

問題は、CMake で正しくビルドする方法がわからないことです。コンパイルするとエラーが発生しますui_formname.h: No such file or directory

CMake でこれを正しくビルドするには、次の要素が必要であると特定しました。

set (UI_HDR ${CMAKE_SOURCE_DIR}/path/to/formname.ui)
QT4_WRAP_UI (COMPONENT_UI_HDR ${UI_HDR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}) #Necessary here?

これと他の 2 つのケースの違いは、この cmakefile が実行可能ファイルをビルドしていないのに対し、他の 2 つのケースでは実行可能であったことです。他に何か不足している可能性がありますが、変数がそのリストに含まれている場合add_executable、変数がそのリストに含まれているため、行がないことが最も明白な違いですCOMPONENT_UI_HDR

それを回避する方法について何か提案はありますか?

4

1 に答える 1

1

問題を解決しました。確かに、「add_executable」の違いについては正しかった。これは実行可能ファイルではなくライブラリであるため、ラップされた変数への参照を add_library 呼び出しに追加する必要がありました。

add_library ( ${...} ${COMPONENT_UI_HDR} )

無事にコンプ…

于 2013-08-11T00:33:52.710 に答える