Создание Zip с использованием CMake без относительного пути - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу собрать артефакты сборки в zip, чтобы доставить их на сервер доставки. Для этого я интегрировал создание zip в подпрограмму CMake.

# zip the final release files into the build artifact
# call the zipping with 'cmake --build . --target zip' or 'make zip'
string(TIMESTAMP DATE_STRING %Y%m%d)
add_custom_target(zip
    COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}-${DATE_STRING}.zip" "--format=zip"  "--"
            "${PROJECT_SOURCE_DIR}/bin/release/*")

Артефакты находятся в папке bin/release в ProjectSourceDir. Моя проблема в том, что у файла zip есть относительный путь к файлам из моего каталога сборки. Так что все файлы находятся под ../bin/release/, что не то, что я хочу. Я хочу, чтобы файлы находились в «домашней папке» zip-файла.

Я нашел решение для подготовки zip-папки в моей папке сборки, но я считаю, что это очень непрактично или выглядит грязно для меня.

1 Ответ

1 голос
/ 17 апреля 2020

A WORKING_DIRECTORY можно указать для add_custom command.

add_custom_target(zip 
    COMMAND ${CMAKE_COMMAND} -E tar cvf ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}-${DATE_STRING}.zip --format=zip .
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/release
)

Вам не нужны все эти дополнительные кавычки, как указано в примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...