2012-04-18 6 views
5

私はcmakeとcpackを使ってプロジェクトをビルドし、パッケージをビルドしています。私は自分のプロジェクトでいくつかの実行ファイルを作成していますが、それらをEXE1EXE2と呼んでいます。cmake:実行ファイルをインストールしてそれらへのリンクを作成

これらの実行可能ファイルの異なるバージョンを作成するときは、実行可能ファイルのバージョンを反映するように名前を付けたいとします(EXE1_1.0.0としましょう)。 set_target_propertiesを実行して、ターゲットの出力の名前を変更できます。 installを行うとき

しかし、今、私はつまり、私はすなわち

  • 「バージョン管理」実行ファイルはbinディレクトリにインストールされ、EXE1_1.0.0を持ちたい、実行可能ファイルのこのバージョン管理名にシンボリックリンクを作成したいと思います
  • 誰かがどのように私を提案することができますすなわちEXE1_1.0.0

を指すシンボリックリンクEXE1を、作成し、「バージョン管理」実行ファイルへのシンボリックリンクを作成これを行う?

第2の質問は: 設定ファイル/ etc/MYPROJECT /ディレクトリのインストール方法は?実行ファイルにはbin、ライブラリにはlibを使用するのと同様に、設定ファイルにはどのようなDESTINATIONを使用する必要がありますか? cmakeでの許容範囲は/etcのような絶対パスを使用していますか?

+0

あなたはCMakeのメーリングリストであなたに与えられた答えを掲載することによりここにあなた自身の質問に答える必要があります。 – Fraser

+0

これを指摘してくれてありがとう。 – Lazylabs

答えて

3

私はその後、cmakeのメーリングリストでこの質問をしたが、これは私が受け取った応答です:

答えの妥当性は、あなたが を使用し、あなたがしたいプラットフォームのセットCMakeのバージョンこれに依存しますサポート。

シンボリックリンクはそのポータブル

a)の作成は、[現在]ポータブルに行われない場合もありませんが、UNIXをターゲット をしている場合は1を作成するためにcmakeの-E create_symlink使用することができます。

b)使用するCPackジェネレータに応じて、CMake/CPackバージョン
のシンボリックリンクがパッケージに組み込まれているかどうかに関係なく使用できます。

つまりCPackの前2.8.7は、 のシンボリックリンクを含むZIPアーカイブを作成できません。CPack 2.8.8でこれを行うことができます。

その後、あなたは は、インストール時にそれを行うために)...((SCRIPTをインストール...またはインストールコードを使用することができます。

別のオプションあなたはRPMを使用している場合は、インストール パッケージの特定のポストを使用することですスクリプト。cpack --help-変数 CPACK_RPM_POST_INSTALL_SCRIPT_FILE

この最後の解決策は、オフコースのみCPackのRPMのために動作します。

2番目の質問については

あなたは絶対宛先パスを使用することができます。ちょうど をCPack DEBとRPMでうまく処理する必要があります。他にはわかりません。

ソフトウェアをWindowsにインストールする必要がある場合は、 のアーカイブジェネレータ(ZIP、TGZなど)および/またはNSISで動作しません。

あなたが何か行うことができますすることができる。(UNIX AND NOT APPLE)セット(CONFDESTの "/ etc/$ {CMAKE_PROJECT_NAME}")場合

を他 ()セット( "など" CONFDEST)ENDIF()

インストール(FILES yourconffile DESTINATIONの$ {} CONFDEST)

関連する問題