cmake и как избежать разархивирования архива несколько раз - PullRequest
0 голосов
/ 30 апреля 2018

Я использую следующую команду cmake для извлечения zip-файла

 ${CMAKE_COMMAND} -E tar xkf 

Это распаковать файл как есть.

Я бы хотел ИЗБЕЖАТЬ разархивирования, когда файл уже разархивирован. Как я могу это сделать? Похоже, что для этого нет возможности.

1 Ответ

0 голосов
/ 01 мая 2018

Добавить зависимость.

Результат операции распаковки должен быть использован на следующем этапе сборки. Добавьте зависимость между распаковкой и шагом сборки.

  1. Используйте add_custom_command, чтобы распаковать файлы и скопировать их в нужную папку
  2. Расширить вашу цель зависимостью от извлеченных файлов

Следующий пример показывает это для цели TTNLIB.

Пример:

add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
COMMAND ${CMAKE_COMMAND} -E tar xkf ${CMAKE_SOURCE_DIR}/external/ttnbitvector.cpp.zip -C ${CMAKE_SOURCE_DIR}/external
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/external/ttnbitvector.cpp ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external
COMMENT Extract ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
)

add_library(TTNLIB SHARED ${SOURCES} ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp)

Примечание: ознакомьтесь с документацией add_custom_command

См. cmake solutions для получения дополнительной информации.

...