From 1bc1e914c86701e6858ee213ca3a605da398f37a Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <joscha@schmiedt.dev> Date: Tue, 15 Oct 2024 21:04:50 +0200 Subject: [PATCH] Add Windows "Makefile" --- make.ps1 | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 make.ps1 diff --git a/make.ps1 b/make.ps1 new file mode 100644 index 0000000..ad8e12f --- /dev/null +++ b/make.ps1 @@ -0,0 +1,89 @@ +param ( + [string]$target +) + +$buildType = "Release" +$cppStd=17 + +function Install-Conan { + Write-Output "Installing Release dependencies with Conan..." + # check if conan is available + if (-not (Get-Command conan -ErrorAction SilentlyContinue)) { + Write-Output "Conan is not available. Please install Conan or activate the Conan environment venv" + exit 1 + } + conan install . --build=missing -s build_type=$buildType -s compiler.cppstd=$cppStd + cmake --preset conan-default +} + +function Invoke-Build { + Write-Output "Building the project..." + # check if msbuild is available + if (-not (Get-Command msbuild -ErrorAction SilentlyContinue)) { + Write-Output "msbuild is not available. Please install Visual Studio or open the Developer PowerShell." + exit 1 + } + # check if conan install was run + if (-not (Test-Path .\build\liblinkahead_inttests.sln)) { + Write-Output "Please run conan-install first." + exit 1 + } + msbuild .\build\liblinkahead_inttests.sln /property:Configuration=$buildType +} + +function Invoke-Tests { + Write-Output "Running tests..." + + Set-Location .\build\ + ctest + Set-Location ..\ +} + +function Invoke-Create { + Write-Output "Creating Conan package..." + conan create . +} + +# check if vswhere is available +if (-not (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe")) { + Write-Output "vswhere is not available. Please install Visual Studio" + exit 1 +} + +# locate the latest Visual Studio installation +$currentPath = Get-Location +$installPath = &"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath +Import-Module (Join-Path $installPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll") +Enter-VsDevShell -VsInstallPath $installPath +Set-Location $currentPath + + +# Windows is with Release only for now + +switch ($target) { + "build" { + Invoke-Build + } + "test" { + Invoke-Tests + } + "conan-install" { + Install-Conan + } + "conan-create" { + Invoke-Create + } + "clean"{ + Write-Output "Cleaning the project..." + Remove-Item -Recurse -Force .\build\* + } + "all" { + Install-Conan + Invoke-Build + Invoke-Tests + Invoke-Create + } + default { + Write-Output "Usage: .\make.ps1 [all|conan-install|build|test|clean]" + } +} -- GitLab