[CMake] Empty CPack variables

Eric Noulard eric.noulard at gmail.com
Sun Oct 6 16:55:56 EDT 2013


2013/10/6 Pau Garcia i Quiles <pgquiles at elpauer.org>:
> Hello,
>
> I am using CMake 2.8.11.2 on Windows to build and package some software. If
> I do this, it works fine:
>
>    set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Wt binary build")
>    set(CPACK_PACKAGE_VENDOR "emweb bvba")
>    set(CPACK_PACKAGE_DESCRIPTION_FILE
> "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
>    set(CPACK_RESOURCE_FILE_LICENSE
> "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
>    set(CPACK_PACKAGE_VERSION_MAJOR "3")
>    set(CPACK_PACKAGE_VERSION_MINOR "3")
>    set(CPACK_PACKAGE_VERSION_PATCH "1")
>    set(CPACK_PACKAGE_INSTALL_DIRECTORY "Wt
> ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
>    set(CPACK_GENERATOR "ZIP;NSIS")
>    include(CPack)
>
> But if I add this line before include(CPack):
>
>   set(CPACK_PACKAGE_FILE_NAME
> "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
>
> then CPACK_PACKAGE_NAME, CPACK_PACKAGE_VERSION and CPACK_SYSTEM_NAME are
> empty and the file is generated as "---.zip" / "---.exe".

I think your conclusion is flawed.

doing
set(CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")

in your CMakeLists.txt will set CPACK_PACKAGE_FILE_NAME to "--"
BECAUSE
CPACK_PACKAGE_NAME, CPACK_PACKAGE_VERSION and CPACK_SYSTEM_NAME
are not defined YET.
In fact they will  be defined AFTER include(CPack).

> Am I doing something wrong? (I want to add a couple more variables in the
> CPACK_PACKAGE_FILE_NAME variable to specify compiler and compiler version,
> that's why I'm composing CPACK_PACKAGE_FILE_NAME)

You should either:

1) not rely on CPACK_xxx variable before include(CPack) and craft the value
    of CPACK_PACKAGE_FILE_NAME entirely.

or

2) use a CPACK_PROJECT_CONFIG_FILE and re-define
CPACK_PACKAGE_FILE_NAME in there.
    The CPack project file is loaded at CPack time so that all "usual"
CPack variables will
    be defined and usable.


-- 
Erk
L'élection n'est pas la démocratie -- http://www.le-message.org


More information about the CMake mailing list