[cmake-developers] New property scope for install()ed files?
Nils Gladitz
nilsgladitz at gmail.com
Tue May 20 07:09:25 EDT 2014
On 05/19/2014 07:42 PM, Brad King wrote:
> On 05/16/2014 04:56 PM, Nils Gladitz wrote:
>> I write the properties file at generation time rather than configuration
>> time ... perhaps generator expressions could be allowed for keys?
>
> So far generator expressions are allowed only when the content will be
> evaluated on a per-configuration basis. Since installation requires
> a specific configuration to be chosen, this is well-defined. However,
> the implementation will have to take care of loading the properties
> for the matching configuration at the right time.
I was looking at cmTestGenerator and found cmScriptGenerator which seems
to already generalize this somewhat.
This requires a variable with the current configuration to be available
when the properties are loaded.
CPack currently sets CPACK_BUILD_CONFIG after reading CPackConfig.cmake
(I include my properties file from it) but it should be possible to
reverse that without breaking anything(?).
>
>> If they were set by install() itself there would need to be some sort of
>> disambiguation in case there are multiple files being installed (like
>> there already is for DESTINATION).
>
> Yes, and the same mechanism could probably work. We don't have to
> implement it for install() now, I was just using that example as a
> reason to choose the name "INSTALL" for the set/get_property commands.
I changed the scope name to "INSTALL" and prefixed the two existing
properties with "CPACK_".
>
> We also need a name clearer than "install property" to refer to these.
> Perhaps "install file property" (like current "source file property")?
I used "installed file property".
I kind of like how it disambiguates the fact that the property applies
to the destination rather than the source file of the installation but I
am not a native english speaker so perhaps it doesn't make as much sense
as I hope it does.
> FYI, some updates to code in Utilities/Sphinx will be needed so that
> these properties can be documented in a location like Help/prop_inst.
I didn't really know what I was doing but I duplicated the code specific
to one of the other properties and added documentation for my first two
properties.
Thanks again for your feedback!
Nils
More information about the cmake-developers
mailing list