CMakePackage: convert variants to CMake arguments (#14376)
Add a 'define_from_variant` helper function to CMake-based Spack
packages to convert package variants into CMake arguments. For
example:
args.append('-DFOO=%s' % ('ON' if '+foo' in self.spec else 'OFF'))
can be replaced with:
args.append(self.define_from_variant('foo'))
The following conversions are handled automatically:
* Flag variants will be converted to CMake booleans
* Multivalued variants will be converted to semicolon-separated strings
* Other variant values are converted to CMake string arguments
This also adds a 'define' helper method to convert any variable to
a CMake argument. It has the same conversion rules as
'define_from_variant' (but operates directly on values rather than
requiring the user to supply the name of a package variant).
This commit is contained in:
@@ -21,6 +21,14 @@ class CmakeClient(CMakePackage):
|
||||
|
||||
version('1.0', '4cb3ff35b2472aae70f542116d616e63')
|
||||
|
||||
variant(
|
||||
'multi', description='',
|
||||
values=any_combination_of('up', 'right', 'back').with_default('up')
|
||||
)
|
||||
variant('single', description='', default='blue',
|
||||
values=('blue', 'red', 'green'), multi=False)
|
||||
variant('truthy', description='', default=True)
|
||||
|
||||
callback_counter = 0
|
||||
|
||||
flipped = False
|
||||
|
||||
Reference in New Issue
Block a user