2017-05-15 5 views
0

ライブラリをLIBRARY_OUTPUT_PATHにコピーするカスタムターゲットを作成しようとしています。以下は私のCMakeLists.txtです。ライブラリをコピーするカスタムターゲットを作成する方法は?

MYCOMPONENTフォルダの内容は、mylib.soとCMakeLists.txtです。

cmake_minimum_required(VERSION 2.8) 
project(MYCOMPONENT) 
add_custom_target(MYTARGET 
        COMMAND ${CMAKE_COMMAND} -E copy ./mylib.so ${LIBRARY_OUTPUT_PATH}) 

私は次のようにします。

cd MYCOMPFOLDER 
mkdir build_debug 
cd build_debug 
cmake -DLIBRARY_OUTPUT_PATH=<mycompfolderfullpath>/build_debug/bin .. 

今私はbuild_debugのLSを行うと、私が手:

CMakeCache.txt CMakeFiles cmake_install.cmake Makefileの

ls CMakeFiles/ 
3.5.1       CMakeTmp   Makefile2 
cmake.check_cache    feature_tests.bin Makefile.cmake 
CMakeDirectoryInformation.cmake feature_tests.c progress.marks 
CMakeOutput.log     feature_tests.cxx TargetDirectories.txt 
CMakeRuleHashes.txt    MYCOMPONENT.dir 

ls CMakeFiles/MYCOMPONENT.dir/ 
build.make cmake_clean.cmake DependInfo.cmake progress.make 

からbuild_debug、 "find。-name mylib.so"はどこにもないので、もちろん "make MYTARGET"は失敗します。 cmakeにmylib.soを適切に処理させるにはどうすればよいですか?これはサードパーティ製のライブラリですが、構築しません。ターゲットはこのフォルダからLIBRARY_OUTPUT_PATHにコピーされ、他のコンポーネントがそこからリンクできるようにすることです。

+0

私が正しくundestandした場合、ビルドディレクトリに 'mylib.so'が存在しないので、copiingは失敗します。明らかに、成功したコピーのためにファイルへの正しいパスを指定する必要があります。 **質問とは何ですか?**あなたのマシンに 'mylib.so'がどこにあるのか尋ねますか?あなただけがそれを知っています。 – Tsyvarev

+0

ソースツリー外のビルドを実行すると、cmakeはソースフォルダのファイルを新しいツリーにコピーします - mylib.soはコピーされず、CMakeLists.txtファイルのみがコピーされます。それが私が求めていることです。なぜ私のワークスペース内の他のすべてのファイルと同様に、ソースツリー外のパスにコピーされません。私はファイルがどこにあるのか知っています。これが普通のcmakeの振る舞いであれば、../mylib.so(build_debugフォルダに関連して)をコピーしますが、ソースツリー外のビルドはこのファイルをコピーします。ソースツリー内の唯一のバイナリファイルではありません。シェーダもあらかじめコンパイルされています。 – cspiral

+0

あなたは間違っています:**何も**ソースツリー*から*バイナリツリー*に自動的にはコピーされません。慎重に:ビルドツリーに 'CMakeLists.txt'はありません。いずれにしても、 'mylib.so'を他の場所にコピーしたい場合は、ソースツリー(' $ {CMAKE_SOURCE_DIR}/mylib.so')からコピーしてください。 – Tsyvarev

答えて

0

-E copy部分に相対パスを使用しないでください。変数CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR,CMAKE_BINARY_DIRおよびCMAKE_CURRENT_BINARY_DIRは自由に使用できます。

+0

説明をいただきありがとうございます。応答が出る前にPROJECT_SOURCE_DIRを使って試してみましたが、これもうまくいきました。 – cspiral

関連する問題