CPack: allow custom file extension in archive generator

This commit is contained in:
Andrey Filipenkov
2022-08-11 15:35:45 +03:00
committed by Brad King
parent 5d0685aa3e
commit cc3cd8bc2a
3 changed files with 24 additions and 0 deletions

View File

@@ -57,6 +57,12 @@ Variables specific to CPack Archive generator
.. versionadded:: 3.9
Per-component ``CPACK_ARCHIVE_<component>_FILE_NAME`` variables.
.. variable:: CPACK_ARCHIVE_FILE_EXTENSION
.. versionadded:: 3.25
Package file extension. Default values are given in the list above.
.. variable:: CPACK_ARCHIVE_COMPONENT_INSTALL
Enable component packaging. If enabled (ON), then the archive generator

View File

@@ -0,0 +1,6 @@
cpack-archive-custom-extension
------------------------------
* The :cpack_gen:`CPack Archive Generator` gained a new
:variable:`CPACK_ARCHIVE_FILE_EXTENSION` variable to control
the package file name extension.

View File

@@ -94,6 +94,18 @@ std::string cmCPackArchiveGenerator::GetArchiveComponentFileName(
int cmCPackArchiveGenerator::InitializeInternal()
{
this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "1");
cmValue newExtensionValue = this->GetOption("CPACK_ARCHIVE_FILE_EXTENSION");
if (!newExtensionValue.IsEmpty()) {
std::string newExtension = *newExtensionValue;
if (!cmHasLiteralPrefix(newExtension, ".")) {
newExtension = cmStrCat('.', newExtension);
}
cmCPackLogger(cmCPackLog::LOG_DEBUG,
"Using user-provided file extension "
<< newExtension << " instead of the default "
<< this->OutputExtension << std::endl);
this->OutputExtension = std::move(newExtension);
}
return this->Superclass::InitializeInternal();
}