Skip to content

Commit

Permalink
update cmake generators (#29)
Browse files Browse the repository at this point in the history
* add Visual Studio 17 2022

* add Ninja Multi-Config generator
  • Loading branch information
svenevs committed Aug 21, 2021
1 parent 1b513bf commit 9e7bd3f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
16 changes: 13 additions & 3 deletions ci_exec/parsers/cmake_parser.py
Expand Up @@ -261,14 +261,22 @@ class CMakeParser(argparse.ArgumentParser):
__ https://cmake.org/cmake/help/latest/generator/Ninja.html
"""

ninja_multi_generator = {"Ninja Multi-Config"}
"""
The `Ninja Multi-Config Generator`__.
__ https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html
"""

visual_studio_generators = {
"Visual Studio 9 2008",
"Visual Studio 10 2010",
"Visual Studio 11 2012",
"Visual Studio 12 2013",
"Visual Studio 14 2015",
"Visual Studio 15 2017",
"Visual Studio 16 2019"
"Visual Studio 16 2019",
"Visual Studio 17 2022"
}
"""
The `Visual Studio Generators`__.
Expand All @@ -286,7 +294,8 @@ class CMakeParser(argparse.ArgumentParser):
@classmethod
def is_multi_config_generator(cls, generator: str) -> bool:
"""Whether or not string ``generator`` is a multi-config generator."""
return generator in (cls.visual_studio_generators | cls.other_generators)
return generator in (cls.visual_studio_generators | cls.other_generators |
cls.ninja_multi_generator)

@classmethod
def is_single_config_generator(cls, generator: str) -> bool:
Expand All @@ -310,7 +319,8 @@ def __init__(self, *, add_extra_args: bool = True,
help="Generator to use (CMake -G flag).",
choices=sorted(
self.makefile_generators | self.ninja_generator |
self.visual_studio_generators | self.other_generators
self.ninja_multi_generator | self.visual_studio_generators |
self.other_generators
)
)

Expand Down
9 changes: 8 additions & 1 deletion tests/parsers/cmake_parser.py
Expand Up @@ -53,7 +53,8 @@ def test_cmake_parser_is_x_config_generator():
assert CMakeParser.is_single_config_generator(g)
assert not CMakeParser.is_multi_config_generator(g)

for g in chain(CMakeParser.visual_studio_generators, CMakeParser.other_generators):
for g in chain(CMakeParser.visual_studio_generators, CMakeParser.other_generators,
CMakeParser.ninja_multi_generator):
assert not CMakeParser.is_single_config_generator(g)
assert CMakeParser.is_multi_config_generator(g)

Expand Down Expand Up @@ -492,3 +493,9 @@ def test_cmake_parser_single_vs_multi_configure_build_args():
])
assert "-DCMAKE_BUILD_TYPE=Debug" not in args.cmake_configure_args
assert args.cmake_build_args == ["--config", "Debug"]

args = parser.parse_args([
"-G", "Ninja Multi-Config", "--build-type", "Debug"
])
assert "-DCMAKE_BUILD_TYPE=Debug" not in args.cmake_configure_args
assert args.cmake_build_args == ["--config", "Debug"]

0 comments on commit 9e7bd3f

Please sign in to comment.