aboutsummaryrefslogtreecommitdiff
path: root/tools/build.py
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-03-28 19:19:18 +0800
committercrupest <crupest@outlook.com>2019-03-28 19:19:18 +0800
commitfd207a4499a29e3085fb9b73db4a228cde110d60 (patch)
treea4c1d865382c76f0cb3b9681304756570524c579 /tools/build.py
parentd72ff7334270de91242240d45263783e72546a1e (diff)
downloadcru-fd207a4499a29e3085fb9b73db4a228cde110d60.tar.gz
cru-fd207a4499a29e3085fb9b73db4a228cde110d60.tar.bz2
cru-fd207a4499a29e3085fb9b73db4a228cde110d60.zip
...
Diffstat (limited to 'tools/build.py')
-rw-r--r--tools/build.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/tools/build.py b/tools/build.py
index ab7c1205..329e14e7 100644
--- a/tools/build.py
+++ b/tools/build.py
@@ -9,19 +9,31 @@ parser.add_argument('-a', '--arch', choices=['x86', 'x64'],
required=True, help='specify target cpu architecture')
parser.add_argument('-c', '--config', choices=['Debug', 'Release'],
required=True, help='specify build configuration')
+parser.add_argument('-e', '--vs-edition', choices=['Community', 'Enterprise'],
+ default='Community', help='specify visual studio edition')
args = parser.parse_args()
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
-os.chdir(project_root)
-generater_vs_arch_map = {
- 'x86': 'Win32',
- 'x64': 'x64'
-}
+vs_path = 'C:/Program Files (x86)/Microsoft Visual Studio/2017/{edition}'.format(
+ edition=args.vs_edition)
+
+def setup_vs_env():
+ old_dir = os.getcwd()
+ os.chdir(os.path.join(vs_path, 'VC/Auxiliary/Build'))
+ output = subprocess.check_output('vcvarsall.bat {arch} & set'.format(arch=args.arch), text=True)
+ for line in output.splitlines():
+ e = line.find('=')
+ os.environ[line[:e]] = line[e+1:]
+ os.chdir(old_dir)
+
+setup_vs_env()
+
+os.chdir(project_root)
-subprocess.run('cmake -S . -B build -G "Visual Studio 15 2017" -A {arch}'.format(arch=generater_vs_arch_map[args.arch]),
+subprocess.run('cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE="{config}"'.format(config=args.config),
stdout=sys.stdout, stderr=sys.stderr)
-subprocess.run('cmake --build build --target ALL_BUILD --config {config}'.format(config=args.config),
+subprocess.run('cmake --build build --target all',
stdout=sys.stdout, stderr=sys.stderr)