diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2023-07-03 20:41:10 +0200 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2023-07-03 21:26:12 +0200 |
commit | b3c440a0e582b58bdfd984041e031cf061690648 (patch) | |
tree | 2ce44a3022f912213d5ddbbf9e1117b8b2b49f9b /project/cmake/build.py | |
parent | fix PyLint warnings (diff) | |
download | cmake-common-b3c440a0e582b58bdfd984041e031cf061690648.tar.gz cmake-common-b3c440a0e582b58bdfd984041e031cf061690648.zip |
project.cmake: require the build dir argument
It doesn't make a lot of sense for the build dir argument to be
optional. There's still a placeholder you can use to build in a
temporary directory.
Diffstat (limited to 'project/cmake/build.py')
-rw-r--r-- | project/cmake/build.py | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/project/cmake/build.py b/project/cmake/build.py index 9c98ba3..ef4de1a 100644 --- a/project/cmake/build.py +++ b/project/cmake/build.py @@ -12,7 +12,7 @@ but written in bash and PowerShell, respectively). A simple usage example: - $ cmake-build --configuration Release --install path/to/somewhere -- examples/simple + $ cmake-build --configuration Release --install path/to/somewhere -- examples/simple build/ ... $ ./path/to/somewhere/bin/foo @@ -136,13 +136,14 @@ class BuildPhase: class BuildParameters: - def __init__(self, src_dir, build_dir=None, install_dir=None, + BUILD_DIR_TMP_PLACEHOLDER = 'TMP' + + def __init__(self, src_dir, build_dir, install_dir=None, platform=None, configuration=None, boost_dir=None, toolset_version=None, cmake_args=None): src_dir = normalize_path(src_dir) - if build_dir is not None: - build_dir = normalize_path(build_dir) + build_dir = self.normalize_build_dir(build_dir) if install_dir is not None: install_dir = normalize_path(install_dir) platform = platform or DEFAULT_PLATFORM @@ -167,9 +168,15 @@ class BuildParameters: args.pop('help_toolsets', None) return BuildParameters(**args) + @staticmethod + def normalize_build_dir(build_dir): + if build_dir == BuildParameters.BUILD_DIR_TMP_PLACEHOLDER: + return build_dir + return normalize_path(build_dir) + @contextmanager def create_build_dir(self): - if self.build_dir is not None: + if self.build_dir != BuildParameters.BUILD_DIR_TMP_PLACEHOLDER: logging.info('Build directory: %s', self.build_dir) mkdir_parent(self.build_dir) yield self.build_dir @@ -214,9 +221,6 @@ def _parse_args(argv=None): project.version.add_to_arg_parser(parser) - parser.add_argument('--build', metavar='DIR', dest='build_dir', - type=normalize_path, - help='build directory (temporary directory unless specified)') parser.add_argument('--install', metavar='DIR', dest='install_dir', type=normalize_path, help='install directory') @@ -241,11 +245,11 @@ def _parse_args(argv=None): parser.add_argument('--help-toolsets', action='store_true', help='show detailed info about supported toolsets') - parser.add_argument('src_dir', metavar='DIR', - type=normalize_path, + parser.add_argument('src_dir', type=normalize_path, help='source directory') - parser.add_argument('cmake_args', metavar='CMAKE_ARG', - nargs='*', default=[], + parser.add_argument('build_dir', type=BuildParameters.normalize_build_dir, + help=f"build directory ('{BuildParameters.BUILD_DIR_TMP_PLACEHOLDER}' to use a temporary directory)") + parser.add_argument('cmake_args', nargs='*', default=[], help='additional CMake arguments, to be passed verbatim') return parser.parse_args(argv) |