4

クライアント/サーバー アプリケーションのプロジェクトがあり、それぞれに 1 つのインストール コンポーネントを定義しました。

set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)を実行すると、2 つの異なるパッケージ ファイルを取得するために使用しますmake package。しかし、私はそれぞれに異なるターゲットを取得しません。したがって、クライアント インストール パッケージを取得するために、サーバー アプリケーションもコンパイルしてパッケージ化します。

1 つのコンポーネントのパッケージを取得する簡単な方法はありますか?

4

1 に答える 1

6

CMake は、インストール前に実行する必要があることを前提としていますmake all。パッケージを作成する場合、CPack によって同じ仮定が行われます。make all特定のコンポーネントに関連するターゲットのみをビルドする場合は、それらのターゲットのみを強制的にビルドする必要があります。

たとえば、cmakeコマンド ラインで設定することを意図したキャッシュ変数を確認できます。

CMakeLists.txt :

option(SERVER_ONLY "Set if you want to build only server")
option(CLIENT_ONLY "Set if you want to build only client")

if(NOT SERVER_ONLY)
    add_subdirectory(client)
endif()

if(NOT CLIENT_ONLY)
    add_subdirectory(server)
endif()

したがって、サーバーコンポーネントのみをビルドおよびパッケージ化するには、次を使用できます

cmake -DSERVER_ONLY=ON <source-dir>
cpack <...>
于 2016-01-29T13:13:49.567 に答える