Я пытаюсь сгенерировать msi-пакет с помощью CPack WiX Generator.
В моем CMakeLists.txt
CMAKE_INSTALL_PREFIX
установлено на "C:/Program Files/My Project"
. Мне нужен полный путь, потому что от него зависит значительная часть исходного кода проекта. Также я разбил проект на несколько компонентов, один из которых называется core
.
Я успешно создаю решение Visual Studio с помощью cmake-gui. Но когда я пытаюсь собрать проект PACKAGE
, я получаю следующую ошибку:
53>EXEC : CPack error : Problem creating temporary directory: D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreC:/Program Files/My Project
Та же ошибка возникает, когда я оставляю CMAKE_INSTALL_PREFIX
пустым. В этом случае эта переменная по умолчанию инициализируется значением "C:/Program Files/Project_Name"
, а ошибка будет:
53>EXEC : CPack error : Problem creating temporary directory: D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreC:/Program Files/Project_Name
Только когда я установил CMAKE_INSTALL_PREFIX
на My Project
(без добавления C:/
или /
) все работает хорошо. Каталог создается как D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreMy Project
и создается msi-пакет.
Кажется, что CPack пытается make DESTDIR="D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/core"
установить в качестве промежуточного шага, но, как указано в документация по cmake:
ВНИМАНИЕ: DESTDIR нельзя использовать в Windows, поскольку префикс установки обычно содержит букву диска, как в «C: / Program Files», к которой нельзя добавить какой-либо другой префикс.
Могу ли я неправильно понять использование CMAKE_INSTALL_PREFIX
с генератором CPack WiX? Или это специфично для Visual Studio? Или есть обходной путь для этой проблемы, например, заставить DESTDIR
быть пустым (да, я знаю, что это опасно)?