[CMake] How to set CPACK_PACKAGE_VERSION from a gengetopt configuration file
Yegor Yefremov
yegor_sub1 at visionsystems.de
Mon Sep 21 06:24:40 EDT 2009
>> Hello,
>>
>> I use gengetopt to generate command line parser for my application. The configuration file *.ggo also specifies programs version like this:
>>
>> # Name of your program
>> package "hwtest" # don't use package if you're using automake
>> # Version of your program
>> version "1.2.1" # don't use version if you're using automake
>> ....
>>
>> I'd like to automatically extract these version numbers and assign them to
>>
>> CPACK_PACKAGE_VERSION_MAJOR, CPACK_PACKAGE_VERSION_MINOR and CPACK_PACKAGE_VERSION_PATCH
>>
>> What were the best solution for my problem?
>
> I would say that the simplest solution is to keep those number in your
> CMakeLists.txt
> and use CONFIGURE_FILE(yourfile.ggo.in yourfile.ggo @ONLY)
>
> yourfile.ggo.in could then contain:
>
> # Name of your program
> package "hwtest" # don't use package if you're using automake
> # Version of your program
> version "@PACKAGE_VERSION_MAJOR at .@PACKAGE_VERSION_MINOR at .@PACKAGE_VERSION_PATCH@"
> # don't use version if you're using automake
>
> or even
> # Name of your program
> package "hwtest" # don't use package if you're using automake
> # Version of your program
> version @PACKAGE_VERSION@ # don't use version if you're using automake
>
> alternatively you can use a config.h which contains a VERSION macro
> and compile your gengetopt generated C files with
> -DHAVE_CONFIG_H=1
>
> (just add ADD_DEFINITION(-DHAVE_CONFIG_H=1) to your CMakeLists.txt)
>
> in this second case YOU MUST NOT define version inside *.ggo because
> the VERSION will comes from config.h.
>
> I use the latter method because it was the method used by our previous
> autotools build system. Choosing between those 2 is a matter of taste.
>
Thank you for the hint. I'll try this.
More information about the CMake
mailing list