skbuild.platform_specifics package¶
This package provides get_platform()
allowing to get an instance
of abstract.CMakePlatform
matching the current platform.
This folder contains files the define CMake’s defaults for given platforms. Any of them can be overridden by either command line or by environment variables.
- class skbuild.platform_specifics.CMakeGenerator(name: str, env: Mapping[str, str] | None = None, toolset: str | None = None, arch: str | None = None, args: Iterable[str] | None = None)[source]¶
Bases:
object
Represents a CMake generator.
- __init__(name: str, env: Mapping[str, str] | None = None, toolset: str | None = None, arch: str | None = None, args: Iterable[str] | None = None) None [source]¶
Instantiate a generator object with the given
name
.By default,
os.environ
is associated with the generator. Dictionary passed asenv
parameter will be merged withos.environ
. If an environment variable is set in bothos.environ
andenv
, the variable inenv
is used.Some CMake generators support a
toolset
specification to tell the native build system how to choose a compiler. You can also include CMake arguments.
- property architecture: str | None¶
Architecture associated with the CMake generator.
- property description: str¶
Name of CMake generator with properties describing the environment (e.g toolset)
- property name: str¶
Name of CMake generator.
- property toolset: str | None¶
Toolset specification associated with the CMake generator.
- skbuild.platform_specifics.get_platform() CMakePlatform [source]¶
Return an instance of
abstract.CMakePlatform
corresponding to the current platform.
Submodules¶
skbuild.platform_specifics.abstract module¶
This module defines objects useful to discover which CMake generator is supported on the current platform.
- class skbuild.platform_specifics.abstract.CMakeGenerator(name: str, env: Mapping[str, str] | None = None, toolset: str | None = None, arch: str | None = None, args: Iterable[str] | None = None)[source]¶
Bases:
object
Represents a CMake generator.
- __init__(name: str, env: Mapping[str, str] | None = None, toolset: str | None = None, arch: str | None = None, args: Iterable[str] | None = None) None [source]¶
Instantiate a generator object with the given
name
.By default,
os.environ
is associated with the generator. Dictionary passed asenv
parameter will be merged withos.environ
. If an environment variable is set in bothos.environ
andenv
, the variable inenv
is used.Some CMake generators support a
toolset
specification to tell the native build system how to choose a compiler. You can also include CMake arguments.
- property architecture: str | None¶
Architecture associated with the CMake generator.
- property description: str¶
Name of CMake generator with properties describing the environment (e.g toolset)
- property name: str¶
Name of CMake generator.
- property toolset: str | None¶
Toolset specification associated with the CMake generator.
- class skbuild.platform_specifics.abstract.CMakePlatform[source]¶
Bases:
object
This class encapsulates the logic allowing to get the identifier of a working CMake generator.
Derived class should at least set
default_generators
.- static compile_test_cmakelist(cmake_exe_path: str, candidate_generators: Iterable[CMakeGenerator], cmake_args: Iterable[str] = ()) CMakeGenerator | None [source]¶
Attempt to configure the test project with each
CMakeGenerator
fromcandidate_generators
.Only cmake arguments starting with
-DCMAKE_
are used to configure the test project.The function returns the first generator allowing to successfully configure the test project using
cmake_exe_path
.
- property default_generators: list[CMakeGenerator]¶
List of generators considered by
get_best_generator()
.
- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
- get_best_generator(generator_name: str | None = None, skip_generator_test: bool = False, languages: Iterable[str] = ('CXX', 'C'), cleanup: bool = True, cmake_executable: str = 'cmake', cmake_args: Iterable[str] = (), architecture: str | None = None) CMakeGenerator [source]¶
Loop over generators to find one that works by configuring and compiling a test project.
- Parameters:
generator_name (str | None) – If provided, uses only provided generator, instead of trying
default_generators
.skip_generator_test (bool) – If set to True and if a generator name is specified, the generator test is skipped. If no generator_name is specified and the option is set to True, the first available generator is used.
languages (tuple) – The languages you’ll need for your project, in terms that CMake recognizes.
cleanup (bool) – If True, cleans up temporary folder used to test generators. Set to False for debugging to see CMake’s output files.
cmake_executable (str) – Path to CMake executable used to configure and build the test project used to evaluate if a generator is working.
cmake_args (tuple) – List of CMake arguments to use when configuring the test project. Only arguments starting with
-DCMAKE_
are used.
- Returns:
CMake Generator object
- Return type:
CMakeGenerator
or None- Raises:
- get_generator(generator_name: str) CMakeGenerator [source]¶
Loop over generators and return the first that matches the given name.
- get_generators(generator_name: str) list[CMakeGenerator] [source]¶
Loop over generators and return all that match the given name.
skbuild.platform_specifics.bsd module¶
This module defines object specific to BSD platform.
- class skbuild.platform_specifics.bsd.BSDPlatform[source]¶
Bases:
UnixPlatform
BSD implementation of
abstract.CMakePlatform
.
skbuild.platform_specifics.cygwin module¶
This module defines object specific to Cygwin platform.
- class skbuild.platform_specifics.cygwin.CygwinPlatform[source]¶
Bases:
CMakePlatform
Cygwin implementation of
abstract.CMakePlatform
.- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
skbuild.platform_specifics.linux module¶
This module defines object specific to Linux platform.
- class skbuild.platform_specifics.linux.LinuxPlatform[source]¶
Bases:
UnixPlatform
Linux implementation of
abstract.CMakePlatform
- static build_essential_install_cmd() tuple[str, str] [source]¶
Return a tuple of the form
(distribution_name, cmd)
.cmd
is the command allowing to install the build tools in the current Linux distribution. It set to an empty string if the command is not known.distribution_name
is the name of the current distribution. It is set to an empty string if the distribution could not be determined.
- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
skbuild.platform_specifics.osx module¶
This module defines object specific to OSX platform.
- class skbuild.platform_specifics.osx.OSXPlatform[source]¶
Bases:
UnixPlatform
OSX implementation of
abstract.CMakePlatform
.- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
skbuild.platform_specifics.aix module¶
This module defines object specific to AIX platform.
- class skbuild.platform_specifics.aix.AIXPlatform[source]¶
Bases:
UnixPlatform
AIX implementation of
abstract.CMakePlatform
.- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
skbuild.platform_specifics.platform_factory module¶
This modules implements the logic allowing to instantiate the expected
abstract.CMakePlatform
.
- skbuild.platform_specifics.platform_factory.get_platform() CMakePlatform [source]¶
Return an instance of
abstract.CMakePlatform
corresponding to the current platform.
skbuild.platform_specifics.unix module¶
This module defines object specific to Unix platform.
- class skbuild.platform_specifics.unix.UnixPlatform[source]¶
Bases:
CMakePlatform
Unix implementation of
abstract.CMakePlatform
.
skbuild.platform_specifics.windows module¶
This module defines object specific to Windows platform.
- class skbuild.platform_specifics.windows.CMakeVisualStudioCommandLineGenerator(name: str, year: str, toolset: str | None = None, args: Iterable[str] | None = None)[source]¶
Bases:
CMakeGenerator
Represents a command-line CMake generator initialized with a specific Visual Studio environment.
- __init__(name: str, year: str, toolset: str | None = None, args: Iterable[str] | None = None)[source]¶
Instantiate CMake command-line generator.
The generator
name
can be values like Ninja, NMake Makefiles or NMake Makefiles JOM.The
year
defines the Visual Studio environment associated with the generator. SeeVS_YEAR_TO_VERSION
.If set, the
toolset
defines the Visual Studio Toolset to select.The platform (32-bit or 64-bit or ARM) is automatically selected.
- class skbuild.platform_specifics.windows.CMakeVisualStudioIDEGenerator(year: str, toolset: str | None = None)[source]¶
Bases:
CMakeGenerator
Represents a Visual Studio CMake generator.
- __init__(year: str, toolset: str | None = None) None [source]¶
Instantiate a generator object with its name set to the Visual Studio generator associated with the given
year
(seeVS_YEAR_TO_VERSION
), the current platform (32-bit or 64-bit) and the selectedtoolset
(if applicable).
- class skbuild.platform_specifics.windows.CachedEnv[source]¶
Bases:
TypedDict
Stored environment.
- INCLUDE: str¶
- LIB: str¶
- PATH: str¶
- skbuild.platform_specifics.windows.VS_YEAR_TO_VERSION = {'2017': 15, '2019': 16, '2022': 17}¶
Describes the version of Visual Studio supported by
CMakeVisualStudioIDEGenerator
andCMakeVisualStudioCommandLineGenerator
.The different version are identified by their year.
- class skbuild.platform_specifics.windows.WindowsPlatform[source]¶
Bases:
CMakePlatform
Windows implementation of
abstract.CMakePlatform
.- property generator_installation_help: str¶
Return message guiding the user for installing a valid toolchain.
- skbuild.platform_specifics.windows.find_visual_studio(vs_version: int) str [source]¶
Return Visual Studio installation path associated with
vs_version
or an empty string if any.The
vs_version
corresponds to the Visual Studio version to lookup. SeeVS_YEAR_TO_VERSION
.Note
Returns path based on the result of invoking
vswhere.exe
.