Skip to content

Instantly share code, notes, and snippets.

@paxbun
Last active October 7, 2018 10:18
Show Gist options
  • Save paxbun/f88c0da0ea36fd502c62c0dd469fb9e9 to your computer and use it in GitHub Desktop.
Save paxbun/f88c0da0ea36fd502c62c0dd469fb9e9 to your computer and use it in GitHub Desktop.
Call cl.exe from python
import os
env = os.environ
tools = 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\bin\\Hostx64\\x64'
os.environ['PATH'] = tools
include = [
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\include',
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\atlmfc\\include',
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\VS\\include',
'C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17134.0\\ucrt',
'C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17134.0\\um',
'C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17134.0\\shared',
'C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17134.0\\winrt',
'C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17134.0\\cppwinrt',
'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\Include\\um',
]
macro = [
# 'WIN32' # x86
#'_DEBUG' # NDEBUG
#'_CONSOLE' # _WINDOWS
'_DEBUG',
'_WINDOWS',
'_UNICODE',
'UNICODE',
]
lib = [
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\lib\\x64', # \\x86'
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\atlmfc\\lib\\x64',
'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\VS\\lib\\x64',
'C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.17134.0\\ucrt\\x64',
'C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.17134.0\\um\\x64',
'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\lib\\um\\x64',
'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\Lib\\um\\x64',
]
lib_in = [
'kernel32.lib',
'user32.lib',
'gdi32.lib',
'winspool.lib',
'comdlg32.lib',
'advapi32.lib',
'shell32.lib',
'ole32.lib',
'oleaut32.lib',
'uuid.lib',
'odbc32.lib',
'odbccp32.lib',
]
include = ['"/I' + l + '"' for l in include]
macro = ['"/D' + l + '"' for l in macro]
lib = ['"/LIBPATH:' + l + '"' for l in lib]
lib_in = ['"/DEFAULTLIB:' + l + '"' for l in lib_in]
source = [
# Source Files
'main.cc'
]
cmd = ' '.join([
'cl',
'/O2', # Maximum Optimization
'/MDd', # Use External DLL
'/W4', # Warning Level 4
'/EHsc', # C++ Exception enabled
'/Zi', # debug mode
'/Fe:main.exe',
] + include + macro + source + ['/link'] + lib + lib_in + ['/SUBSYSTEM:WINDOWS']) # /SUBSYSTEM:CONSOLE # /DLL
os.system(cmd)
os.environ = env
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment