1

これについて数時間検索していましたが、解決策が見つからなかったので質問しました。

約10のプロジェクトを含むプロジェクトのソリューションがあります。しかし、依存関係の問題に直面しています。私のプロジェクトの 1 つが moc ファイル (Cmake の 'QT4_WRAP_CPP' マクロによって生成された QT moc ファイル) を生成し、この moc ファイルを別のプロジェクトで使用したいと考えています。今のところ、cmake スクリプトを実行して解決策を取得した後、すべてのプロジェクトをビルドし、前のプロジェクトで生成された moc ファイルを必要とするプロジェクトは、リンク エラーについて文句を言います (当然のことながら、c-make でファイルを指定していないためです)。 ADD_EXECUTABLE セクションのスクリプト)。

私の質問は次のとおりです。「まだビルドされていませんが、」ファイルを Cmake のプロジェクトに追加して、その間に cmake スクリプトを作成する方法はありますか?

プロジェクトの cmake スクリプトの関連セクションは次のとおりです。

// X プロジェクト (このソリューションにもあり、Y プロジェクトの前にビルドされたもの) が「moc_X.cxx」という名前の moc ファイルを生成するとします。

SET(Y_WORK_STATION_UI_HEADER YWorkStation.h
        YSignInWidget.h
        YConfigurationWidget.h)

     QT4_WRAP_CPP(MOCSrcs ${Y_WORK_STATION_UI_HEADER})

ADD_EXECUTABLE(${PROJECT_NAME}
        main.cpp
        .
        .
        .
        ${MOCSrcs}
        %---------------->and here something like moc_X.cxx ?
    }

それが十分に明確であることを願っています。前もって感謝します。

4

2 に答える 2

1

ファイルが CMake が理解するもの (つまり、同じ CMakeList 内のカスタム コマンド) によって生成された場合、それを一覧表示するだけで、CMake は依存関係を自動的に取得します。それ以外の場合は、GENERATEDビルド中に生成されることを示すためにソース ファイルに設定できるソース ファイル プロパティがあります。

add_executable(${PROJECT_NAME}
        main.cpp
        .
        .
        .
        ${MOCSrcs}
        moc_X.cxx ?
    )

set_property(SOURCE moc_X.cxx PROPERTY GENERATED TRUE)
于 2014-11-26T14:00:29.387 に答える