Skip to content

Commit

Permalink
vs: Add convenience script to create a Visual Studio
Browse files Browse the repository at this point in the history
  • Loading branch information
madebr committed Jun 14, 2018
1 parent 7d2da28 commit 7ef0515
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions scripts/conan/create_vs_solution.py
@@ -0,0 +1,68 @@
#!/usr/bin/env python3

import argparse
from pathlib import Path
import platform
import subprocess
import sys

from conans.client import conan_api


openrw_path = Path(__file__).resolve().parents[2]
windows_profile = openrw_path / 'scripts' / 'conan' / 'windows'
cmake_generator_lookup = {
2015: 'Visual Studio 14 2015',
2017: 'Visual Studio 15 2017',
}
architectures = ['x64', 'x86']


def to_cmake_generator(vs_version, arch):
cmake_generator = cmake_generator_lookup[vs_version]
if arch == 'x64':
cmake_generator = '{} Win64'.format(cmake_generator)
return cmake_generator


def create_solution(path, vs_version, arch):
conan, _, _ = conan_api.ConanAPIV1.factory()
conan.remote_add(remote='bincrafters', url='https://api.bintray.com/conan/bincrafters/public-conan', force=True)
conan.install(path=openrw_path, profile_name=windows_profile, generators=('cmake_multi',),
options=('openrw:viewer=False', ), settings=('build_type=Debug', ), install_folder=path)
conan.install(path=openrw_path, profile_name=windows_profile, generators=('cmake_multi',),
options=('openrw:viewer=False', ), settings=('build_type=Release', ), install_folder=path)
cmake_generator = to_cmake_generator(vs_version=vs_version, arch=arch)
subprocess.run([
'cmake', '-DUSE_CONAN=1', '-DBOOST_STATIC=TRUE', '-DBUILD_TESTS=1',
'-G{}'.format(cmake_generator), str(openrw_path),
], cwd=path, check=True)


def main():
parser = argparse.ArgumentParser(description='Create a Visual Studio solution for OpenRW.')
parser.add_argument('path', nargs='?', default=Path(), metavar='PATH', type=Path, help='Location to the solution')
parser.add_argument('-v', default=max(cmake_generator_lookup.keys()), choices=list(cmake_generator_lookup.keys()),
metavar='VERSION', dest='vs_version',
help='Version of Visual Studio (choices={})'.format(list(cmake_generator_lookup.keys())))
parser.add_argument('-a', default=architectures[0], choices=architectures, metavar='ARCH', dest='arch',
help='Architecture to build (choices={})'.format(architectures))
ns = parser.parse_args()

if platform.system() != 'Windows':
print('This script can only generate Visual Studio solutions for Windows.', file=sys.stderr)
sys.exit(1)

path = ns.path.resolve()
arch = ns.arch
vs_version = ns.vs_version

print('Solution directory: {}'.format(path))
print('Architecture: {}'.format(arch))
print('Visual Studio version: {}'.format(vs_version))

create_solution(path=path, vs_version=vs_version, arch=arch)


if __name__ == '__main__':
main()

0 comments on commit 7ef0515

Please sign in to comment.