MantisBT - CMake | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0014198 | CMake | CPack | public | 2013-06-04 10:06 | 2016-06-10 14:31 |
Reporter | Mark Stijnman | ||||
Assigned To | Kitware Robot | ||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | moved | ||
Platform | OS | OS Version | |||
Product Version | CMake 2.8.10.1 | ||||
Target Version | Fixed in Version | ||||
Summary | 0014198: CPack doesn't make variables passed by -D available in CPackConfig.cmake | ||||
Description | When running CPack from the command line, the -D option allows you to pass variables to CPack. However, you can't use the values of these variables in the CPackConfig.cpack, which isn't what I expected. The documentation isn't clear on this either, although in http://www.cmake.org/Wiki/CMake:CPackConfiguration, [^] it says "Some variables may be set/overriden on the command line when invoking CPack", from which I suppose I could have deduced that the assignments from -D are only performed *after* CPack loads CPackConfig.cpack. A workaround is readily available: the values from -D *are* available in the project-specific config file. I think this should either be clearly described in the documentation of CPack, or solved. An easy solution could be to load the command line variables both *before* loading the CPackConfig.cmake file, and again *after* loading it. This way, the variables will be available in the CPackConfig.cmake, if the developer needs them there, while still ensuring that they overwrite whatever is in the CPackConfig.cmake. I think the same thing could be done with the overrides from -C, -P and -R command line switches as well, which as far as I can tell also only get loaded *after* CPackConfig.cmake has already been included. Which means you can't do things like "set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION})" in your CPackConfig.cmake file and expect it to pick up the new CPACK_PACKAGE_NAME from the -P command line parameter. | ||||
Steps To Reproduce | --- CPackConfig.cmake: --- set(CPACK_GENERATOR "ZIP") set(CPACK_PACKAGE_NAME "test") set(CPACK_PACKAGE_DESCRIPTION "A test package") set(CPACK_PACKAGE_VERSION "0.1") set(CPACK_INSTALL_COMMANDS "") set(CPACK_PROJECT_CONFIG_FILE "CPackProjectConfig.cmake") set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} ${CPACK_VERSION_TAG}") message("Package file name in CPackConfig.cmake: ${CPACK_PACKAGE_FILE_NAME}") --- CPackConfig.cmake end --- --- CPackProjectConfig.cmake: --- set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} ${CPACK_VERSION_TAG}") message("Package file name in CPackProjectConfig.cmake: ${CPACK_PACKAGE_FILE_NAME}") --- CPackProjectConfig.cmake end --- Run: cpack -D CPACK_VERSION_TAG="Beta" --config CPackConfig.cmake Output: Package file name in CPackConfig.cmake: test 0.1 Package file name in CPackProjectConfig.cmake: test 0.1 Beta ... Expected output: Package file name in CPackConfig.cmake: test 0.1 Beta Package file name in CPackProjectConfig.cmake: test 0.1 Beta ... | ||||
Additional Information | |||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2013-06-04 10:06 | Mark Stijnman | New Issue | |||
2016-06-10 14:29 | Kitware Robot | Note Added: 0042296 | |||
2016-06-10 14:29 | Kitware Robot | Status | new => resolved | ||
2016-06-10 14:29 | Kitware Robot | Resolution | open => moved | ||
2016-06-10 14:29 | Kitware Robot | Assigned To | => Kitware Robot | ||
2016-06-10 14:31 | Kitware Robot | Status | resolved => closed |
Notes | |||||
|
|||||
|
|