[CMake] Automatically add a revision number to the CPack installer name

Glenn Ramsey gr at componic.co.nz
Thu Mar 8 17:01:31 EST 2012


Yes, you can use add_custom_command(...) to run a script to get the revision 
number, but I don't think you can use that to alter CPACK_PACKAGE_FILE_NAME, 
which has been set at cmake time.

Glenn

On 09/03/12 10:52, Michael Jackson wrote:
> The call is during CMake time. Which means you need to rerun cmake if your
> repository version runs. I guess you could try an add_custom_command(...) and
> run the SVN command to get the revision number and make it a prebuild step
> for one of your targets. Then it should get run at every build. -- Mike
> Jackson<www.bluequartz.net>
>
> On Mar 8, 2012, at 4:44 PM, Glenn Ramsey wrote:
>
>> Hi Mike,
>>
>> When, during the build process is the call to the SCM made? If it is at
>> build time, rather than cmake time, then how do you do it?
>>
>> Glenn
>>
>> On 09/03/12 10:15, Michael Jackson wrote:
>>> I do something like this in my CPack file:
>>>
>>> set(DREAM3D_VERSION_SHORT
>>> "${DREAM3DLib_VER_MAJOR}.${DREAM3DLib_VER_MINOR}")
>>>
>>> set(CPACK_PACKAGE_FILE_NAME
>>> "DREAM3D-${DREAM3D_VERSION_SHORT}-${CMAKE_SYSTEM_NAME}")
>>>
>>>
>>> Where the DREAM3D_Lib_VER_* variables are generated with a call to my SCM
>>> (git in my case) -- Mike Jackson<www.bluequartz.net>
>>>
>>> On Mar 8, 2012, at 3:57 PM, Glenn Ramsey wrote:
>>>
>>>> Is it possible to add, at build time, a revision number to the
>>>> installer file name produced by CPack? I understand that to get the
>>>> revision number at build time one must run a command and I have used
>>>> that technique to generate a source code header, but I cannot figure
>>>> out how to apply it to the package file name. The simplest method would
>>>> appear to be to add a post-build command that renames the file to the
>>>> package target, but it appears that this cannot be currently done [1].
>>>>
>>>> A previous list message [1] suggests the following:
>>>>
>>>>> If you want to hook it up automatically, you could write your own
>>>>> version of the package target that just calls cpack itself in
>>>>> ${CMAKE_BINARY_DIR}. That target could have a post-build rule that
>>>>> does the rename.
>>>>
>>>> When I tried that. It created an infinite loop with cpack calling make
>>>> and make calling cpack.
>>>>
>>>> What would I need to do to correctly implement this solution? Is there
>>>> another way to do it?
>>>>
>>>> Glenn
>>>>
>>>> [1]<http://www.cmake.org/pipermail/cmake/2011-May/044440.html>
>



More information about the CMake mailing list