Created
October 14, 2015 11:40
-
-
Save TNick/debb79e0c9a2a1526fb2 to your computer and use it in GitHub Desktop.
System-wide setup script for Windows machines; deals with Qt, MSVC, CMake
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:: ========================================================= | |
:: | |
:: This script is intended to initialize the environment | |
:: with common variables usable across projects. It | |
:: calls vcvarsall.bat on your behalf. | |
:: | |
:: The easiest way to use it is to define ENVSETUP | |
:: environment variable that points to it, then use | |
:: call %ENVSETUP% %~dp0 | |
:: in your script. | |
:: | |
:: ========================================================= | |
:: | |
:: Arguments to this script: | |
:: - %1: project base directory | |
:: | |
:: ========================================================= | |
:: | |
:: Following variables are unconditionally set by the script: | |
:: - CURRENT_WORKING_DIR: current working directory | |
:: - PROJECT_DIR: project base directory (1st argument) | |
:: - CMAKE_PREFIX_PATH: based on provided options | |
:: - CMAKE_MODULE_PATH: based on provided options | |
:: - CMAKE: path to CMake executable | |
:: - DEST_DRIVE_LETTER: drive where build takes place | |
:: | |
:: ========================================================= | |
:: | |
:: Following variables can be set by the caller and, if | |
:: they are not, will be set by this script as follows: | |
:: - BUILD_CONFIG: can be either Debug or Release | |
:: default: Debug; | |
:: - BITS_COUNT: can be either 32 or 64 | |
:: default: 64; | |
:: - SOURCE_DIR: path to the directory where the source lies | |
:: default: %PROJECT_DIR%\src | |
:: - DEST_DIR: path to the directory where to build it | |
:: default: %PROJECT_DIR%\build-Debug-64 | |
:: - CMAKE_PATH: where CMake is installed | |
:: default: %ProgramFiles%\CMake | |
:: - CMAKE_GENERATOR: one of the generators in cmake --help | |
:: default: "NMake Makefiles"; | |
:: - VCINSTALLDIR: install directory for Microsoft compiler | |
:: default: %ProgramFiles%\msvc-2015 | |
:: - VCVARSALL_ARG: argument to use with vcvarsall.bat | |
:: default: amd64_x86 in 64 bit, x86 in 32 bit | |
:: - VCVARSALL: path to vcvarsall.bat | |
:: default: based on VCINSTALLDIR and VCVARSALL_DEFAULT | |
:: - QTDIR: directory where Qt is installed | |
:: default: %ProgramFiles%\Qt\5.5\%QT_DIR_NAME% | |
:: - QT_DIR_NAME: name of the directory in Qt installation | |
:: default: msvc2013_64 in 64 bit, msvc2013 in 32 bit | |
:: - SSL_PATH: path towards OpenSSL | |
:: default: | |
:: - PILES_PATH: path towards cmake scripts for piles | |
:: default: | |
:: | |
:: ========================================================= | |
:: | |
:: Internal variables: | |
:: - VCVARSALL_DEFAULT | |
:: | |
:: ========================================================= | |
:: Some common variables | |
SET CURRENT_WORKING_DIR=%cd% | |
SET PROJECT_DIR=%1 | |
:: default configuration parameters | |
IF NOT [%BUILD_CONFIG%] == [] GOTO BuildConfigSet | |
SET BUILD_CONFIG=Debug | |
:BuildConfigSet | |
IF NOT [%BITS_COUNT%] == [] GOTO BitsCountSet | |
SET BITS_COUNT=64 | |
:BitsCountSet | |
:: Set things up according to bits count | |
IF "%BITS_COUNT%"=="32" GOTO bit32_variant | |
:: . . . . . . . . . . . . . . . . . . . . . . . . . | |
:bit64_variant | |
SET CMAKE_GENERATOR="NMake Makefiles" | |
SET VCVARSALL_DEFAULT=vcvarsall.bat | |
:: x86_amd64\vcvarsx86_amd64.bat | |
SET VCVARSALL_ARG=amd64_x86 | |
SET QT_DIR_NAME=msvc2013_64 | |
goto done_bit_variant | |
:: . . . . . . . . . . . . . . . . . . . . . . . . . | |
:bit32_variant | |
SET BUILD_BIT_CONFIG=32 | |
SET VCVARSALL_DEFAULT=vcvarsall.bat | |
::vcvars32.bat | |
SET VCVARSALL_ARG=x86 | |
SET CMAKE_GENERATOR="NMake Makefiles" | |
SET QT_DIR_NAME=msvc2013 | |
:done_bit_variant | |
echo BUILDING A %BITS_COUNT% BIT VERSION | |
:: . . . . . . . . . . . . . . . . . . . . . . . . . | |
:: Source folder | |
IF NOT [%SOURCE_DIR%] == [] GOTO SourceDirSet | |
SET SOURCE_DIR=%PROJECT_DIR%src | |
:SourceDirSet | |
:: Destination folder | |
IF NOT [%DEST_DIR%] == [] GOTO DestinationDirSet | |
SET DEST_DIR=%PROJECT_DIR%build-%BUILD_CONFIG%-%BITS_COUNT% | |
:DestinationDirSet | |
SET DEST_DRIVE_LETTER=%DEST_DIR:~0,2% | |
:: Qt installation folder | |
IF NOT [%QTDIR%] == [] GOTO QtDirCheck | |
SET QTDIR=%ProgramFiles%\Qt\5.5\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=C:\pf\Qt\5.5\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=%ProgramFiles%\Qt\5.4\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=C:\pf\Qt\5.4\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=%ProgramFiles%\Qt\5.3\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=C:\pf\Qt\5.3\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=%ProgramFiles%\Qt\5.2\%QT_DIR_NAME% | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR=C:\pf\Qt\5.2\%QT_DIR_NAME% | |
:QtDirCheck | |
IF EXIST %QTDIR%\NUL GOTO QtDirSet | |
SET QTDIR= | |
echo WARNING! Qt directory could not be found | |
:QtDirSet | |
:: CMake installation folder | |
IF NOT [%CMAKE_PATH%] == [] GOTO CmakeDirCheck | |
SET CMAKE_PATH=%ProgramFiles%\Cmake | |
IF EXIST %CMAKE_PATH%\NUL GOTO CmakeDirSet | |
SET CMAKE_PATH=C:\pf\Cmake | |
:CmakeDirCheck | |
IF EXIST %CMAKE_PATH%\NUL GOTO CmakeDirSet | |
SET CMAKE_PATH= | |
echo WARNING! CMake directory could not be found | |
:CmakeDirSet | |
:: Visual C++ installation folder | |
IF NOT [%VCINSTALLDIR%] == [] GOTO VcInstallDirCheck | |
SET VCINSTALLDIR=%ProgramFiles%\msvc-2015\VC\ | |
IF EXIST %VCINSTALLDIR%\NUL GOTO VcInstallDirSet | |
SET VCINSTALLDIR=%ProgramFiles%\msvc-2013\VC\ | |
IF EXIST %VCINSTALLDIR%\NUL GOTO VcInstallDirSet | |
SET VCINSTALLDIR=C:\pf\msvc-2015\VC\ | |
IF EXIST %VCINSTALLDIR%\NUL GOTO VcInstallDirSet | |
SET VCINSTALLDIR=C:\pf\msvc-2013\VC\ | |
:VcInstallDirCheck | |
IF EXIST %VCINSTALLDIR%\NUL GOTO VcInstallDirSet | |
SET VCINSTALLDIR= | |
echo WARNING! MSVC directory could not be found | |
:VcInstallDirSet | |
:: Visual C++ config script | |
IF NOT [%VCVARSALL%] == [] GOTO VcConfigScriptCheck | |
SET VCVARSALL=%VCINSTALLDIR%%VCVARSALL_DEFAULT% | |
:VcConfigScriptCheck | |
IF EXIST %VCVARSALL% GOTO VcConfigScriptSet | |
SET VCVARSALL= | |
echo WARNING! MSVC config script could not be found | |
:VcConfigScriptSet | |
:: OpenSSL installation folder | |
IF NOT [%SSL_PATH%] == [] GOTO OpenSslDirCheck | |
SET SSL_PATH=%ProgramFiles%\OpenSSL_9\bin | |
IF EXIST %SSL_PATH%\NUL GOTO OpenSslDirSet | |
SET SSL_PATH=C:\pf\OpenSSL_9\bin | |
:OpenSslDirCheck | |
IF EXIST %SSL_PATH%\NUL GOTO OpenSslDirSet | |
SET SSL_PATH= | |
echo WARNING! OpenSSL path could not be found | |
:OpenSslDirSet | |
:: Piles CMake scripts installation folder | |
IF NOT [%PILES_PATH%] == [] GOTO PilesDirCheck | |
SET PILES_PATH=%ProgramFiles%\piles\pile-cmake | |
IF EXIST %PILES_PATH%\NUL GOTO PilesDirSet | |
SET PILES_PATH=K:\prog\piles\pile-cmake\src | |
IF EXIST %PILES_PATH%\NUL GOTO PilesDirSet | |
SET PILES_PATH=L:\prog\piles\pile-cmake\src | |
IF EXIST %PILES_PATH%\NUL GOTO PilesDirSet | |
SET PILES_PATH=H:\prog\piles\pile-cmake\src | |
:PilesDirCheck | |
IF EXIST %PILES_PATH%\NUL GOTO PilesDirSet | |
SET PILES_PATH= | |
echo WARNING! Piles CMake script path could not be found | |
:PilesDirSet | |
:: ========================================================= | |
:: load environment variables from MSVC | |
IF [%VCVARSALL%] == [] GOTO NoVcVar | |
call %VCVARSALL% %VCVARSALL_ARG% | |
:NoVcVar | |
:: configure CMake | |
SET CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%QTDIR%;%SSL_PATH% | |
SET CMAKE_MODULE_PATH=%CMAKE_MODULE_PATH%;%PILES_PATH%;%SSL_PATH% | |
call set CMAKE_MODULE_PATH=%%CMAKE_MODULE_PATH:\=/%% | |
SET CMAKE=%CMAKE_PATH%\bin\cmake.exe | |
:: change to proper drive letter | |
%DEST_DRIVE_LETTER% | |
:: ========================================================= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment