Полагаю, у вас уже установлен zip-инструмент (WinZip или 7z и т. Д.). Вы можете написать скрипт find_zip-tool, который будет искать WinZip, или 7Z, и т.д ...
Фрагмент для WinZip:
FIND_PROGRAM(ZIP_EXECUTABLE wzzip PATHS "$ENV{ProgramFiles}/WinZip")
IF(ZIP_EXECUTABLE)
SET(ZIP_COMMAND "\"${ZIP_EXECUTABLE}\" -P \"<ARCHIVE>\" @<FILELIST>")
ENDIF(ZIP_EXECUTABLE)
Фрагмент 7-почтового индекса:
FIND_PROGRAM(ZIP_EXECUTABLE 7z PATHS "$ENV{ProgramFiles}/7-Zip")
IF(ZIP_EXECUTABLE)
SET(ZIP_COMMAND "\"${ZIP_EXECUTABLE}\" a -tzip \"<ARCHIVE>\" @<FILELIST>")
ENDIF(ZIP_EXECUTABLE)
Взгляните на файл
<cmake-install-dir>\share\cmake-2.8\Modules\CPackZIP.cmake
показывает, как CPack ищет Zip_Executable и подготавливает некоторые «полезные» флаги по умолчанию.
После этого я бы предложил выполнить execute_process, аналогично ответу Сакры