短い質問: インストール中にファイルをコピーするときにCMakeをシンボリックリンクに従うように設定することはできますか?CMakeインストール時にシンボリックリンクをたどる
詳細:私はCMakeを使ってLLVMをビルドしてインストールしています。インクルードディレクトリの私のLLVMソースツリーには、LLVMに対して開発中の別のサブプロジェクトへのシンボリックリンクがあります。私が "cmake install"を実行したときにシンボリックリンクに従わずにインクルードディレクトリをコピーしたことに気が付いた以外は、すべて動作するようです。私が持っている問題は、シンボリックリンクに相対パスがあることです(gitリポジトリ内にあるためです)。したがって、シンボリックリンクがコピーされたとき(その代わりに、内容をコピーするのではなく)、それらは正しいファイルを指していません。たとえば、私はdsa -> ../../llvm-poolalloc/include/dsa/
を持っています。単にリンクをコピーするのではなく、インストールを行うときにこのリンクの内容をコピーしたいと思います。しかし、私はまだこれを行うためのcmakeの旗が見つかりませんでした。
これはおそらく私のプロジェクトを構成する考え方ではないことを認識していますが、すでに準備されているものを使って作業しています。それがこのようになることを期待して働く。だから私は、シンボリックリンクに従うことができることは、ビルドシステム全体を再構成することなく、私の問題を解決するかもしれないと思う。しかし私は、私がやろうとしていることを達成するためのより良い方法について、他の提案にもオープンしています。
私はLinux(Ubuntu 10.04)で作業しており、LLVM 2.6(llvm-gccとともにソースからコンパイルしています)を使用しています。また、私はCMakeバージョン2.8を使用しています。
編集:
ここでは、インストールの指示に関連付けられているCMakeLists.txtファイルからソースコードです:
install(DIRECTORY include
DESTINATION .
PATTERN ".svn" EXCLUDE
PATTERN "*.cmake" EXCLUDE
PATTERN "*.in" EXCLUDE
PATTERN "*.tmp" EXCLUDE
)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
DESTINATION .
)
含めるディレクトリのディレクトリ一覧は次のとおりです。
dsa -> ../../llvm-poolalloc/include/dsa/
llvm
llvm-c
poolalloc -> ../../llvm-poolalloc/include/poolalloc
私が欲しいのは、dsa
とpoolalloc
ディレクトリをコピーすることですシンボリックリンクをコピーするだけではなく、私がシンボリックリンクで絶対パスを使用しない理由は、それらをgit repoにチェックインさせることです。だから私の絶対的な道は、彼らがレポからチェックアウトをするときにプロジェクトに取り組んでいる他の人とは違うでしょう。
これらを含むコードを表示できますか?また、symlinkを絶対にすることもできます。 – arrowd
@arrowdodger、私の質問を見てくれてありがとう。私は詳細を提供するように編集しましたが、それがまだ不明な場合は教えてください。私は 'install'のためのCMakeのドキュメントを見てきました。私がやりたいことができないと思い始めているので、おそらく別の解決策を考えなければならないでしょう。しかし私は間違っている可能性があります。なぜなら私はCMakeについて知らないことがたくさんあるからです。 –