2016-11-07 22 views
0

ExternalProject_addを使用してcmakeを使用してフェッチしたい外部プロジェクトがあります。
のは、外部のプロジェクトが構造を持っているとしましょう:私たちが使用してExternal_Projectを取得している
ExternalProject_add:一部のファイルはINSTALL_COMMANDでコピーされません

External_Project 
├── myClass.hpp 
├── myClass.cpp 
├── userOfClass.hpp 
├── userOfClass.cpp 

次:この後

ExternalProject_add(get_rtpm 
PREFIX "${EXTERNAL_PROJECT_PREFIX_DIRECTORY}/my_external_project" 
SVN_REPOSITORY "${ZE_MIRROR}/${EXTERNAL_PROJECT_SVN_PATH}" --no-auth-cache 
SVN_TRUST_CERT 1 
SVN_USERNAME "zeUsername" 
SVN_PASSWORD "zePassword" 

UPDATE_COMMAND "" 
CONFIGURE_COMMAND "" 
BUILD_COMMAND "" 
BUILD_IN_SOURCE 1 
INSTALL_COMMAND cmake -E copy_directory . ${FINAL_LOCATION_DIR} 
) 

を私たちは別の場所にフェッチされた外部プロジェクトを移動したいです。 上で見たように、私たちは

INSTALL_COMMAND cmake -E copy_directory . ${FINAL_LOCATION_DIR}<br> 

を使用しています。 INSTALL_COMMANDアップ終了した後、最終的な場所に

ファイルがビーイング:

Final_Location_Dir 
├── External_Project 
│ ├──myClass.hpp 
│ ├── userOfClass.hpp 
│ ├── userOfClass.cpp 

"myClass.cpp" がありません。なぜ??

このコマンドには「copy_directory」が含まれていますが、このファイルは1つだけ削除されています。

+0

'myClass.cpp'は実際には' make -E copy_directory'という名前のソースディレクトリにありますか?ソースディレクトリを手動で調べることで確認できます。 – Tsyvarev

+0

他のcmakeに間違ったディレクトリがあるようです。 – JuanLunaAtbp

+0

ちょっと前にチェックしました。 私が言いました "間違ったディレクトリ"は、別のcmakeの "add_library"パスの1つに間違ったディレクトリがありました。 – JuanLunaAtbp

答えて

0

これを明確にするために

これは別のCMakeで使用されているスペルミスの1つを修正したときに解決されました。

FetchMyExternal.cmakeがExternalProject_addを持つファイルであるとします。 そして

add_library(EXTERNAL_LIBRARY 
    ${FINAL_LOCATION_DIR}/myClass.cpp 
    ${FINAL_LOCATION_DIR}/External_Project/myClass.hpp 
    ${FINAL_LOCATION_DIR}/External_Project/userOfClass.cpp 
    ${FINAL_LOCATION_DIR}/External_Project/userOfClass.hpp 
) 

あなたは上記を参照したよう

を持つ別のCMakeLists.txt、ライブラリを作成しCMakeLists.txtは
のいずれかのファイルに間違った場所にあります。 myClass.cppのパスは、これは別のCMakeLists.txtファイルですが、何とかそれはファイルのいずれかを除外するExternalProject_addのcopy_directoryを引き起こし

${FINAL_LOCATION_DIR}/External_Project/myClass.cpp 

でなければなりません。

最後に場所を修正すると、myClass.cppが最後の場所にコピーされました。

パスが間違っていたために「削除されました」と思われますか?よく分かりません。

関連する問題