2016-11-07 2 views
0

У нас есть внешний проект, который мы хотим получить с помощью cmake с помощью ExternalProject_add.
Допустим, внешний проект имеет структуру:
ExternalProject_add: Некоторые файлы не копируются с INSTALL_COMMAND

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

Мы выборки External_Project используя следующее:

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», но это только один файл, который не учитывается.

+0

Вы уверены, что 'myClass.cpp' действительно * находится в исходном каталоге, из которого вызывается' make -E copy_directory'? Вы можете проверить это, проверив исходный каталог вручную. – Tsyvarev

+0

Похоже, что есть только неправильный каталог в нашем другом cmake. – JuanLunaAtbp

+0

Недавно проверено. «Неправильный каталог», который я указывал, был неправильным каталогом на одном из путей «add_library» в другом cmake. – JuanLunaAtbp

ответ

0

Просто уточнить этот вопрос.

Это было разрешено, когда я исправил один из путей с ошибками, используемых в другом CMake.

Скажем, FetchMyExternal.cmake - это файл с ExternalProject_add. И CMakeLists.txt на другой, который имеет

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, что создает библиотеку имеет
неправильное расположение на одном из файлов. Путь myClass.cpp должен быть

${FINAL_LOCATION_DIR}/External_Project/myClass.cpp 

Это отдельный файл CMakeLists.txt но почему-то это вызывает в copy_directory из ExternalProject_add выйти из одного из файлов.

Исправление местоположения окончательно скопировано myClass.cpp в конечное местоположение.

Возможно, это было «удалено», потому что путь был неправильным? Я не уверен.

Смежные вопросы