From 530cc3976dd43d3654222f375d505ac5c13be468 Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <schmiedt@uni-bremen.de> Date: Fri, 6 Sep 2024 20:38:44 +0200 Subject: [PATCH] Update build instructions on Windows to use make.ps1 --- doc/Install_develop.rst | 29 +++++++--------- make.ps1 | 77 ++++++++++++++++++++++++----------------- 2 files changed, 59 insertions(+), 47 deletions(-) diff --git a/doc/Install_develop.rst b/doc/Install_develop.rst index 0f1b193..8661d8b 100644 --- a/doc/Install_develop.rst +++ b/doc/Install_develop.rst @@ -108,22 +108,19 @@ How to build on Windows We use `Visual Studio 2022 <https://visualstudio.microsoft.com/de/vs/features/cplusplus/>`__ as compiler. We use `cmake <https://cmake.org/download/>`__ as build -tool. - -1. Install Python and create a virtual environment with the dependencies in `requirements.txt`. -2. Activate the environment run in the repository folder: ``conan install . --build=missing -s build_type=Release`` -3. ``cmake --preset conan-default`` -4. Open ``build/liblinkahead.sln`` with Visual Studio, change the - buildtype to ``Release`` and build the project (ALL_BUILD). (You - can open Tools/Command Line/Developer Command Prompt and execute - ``msbuild liblinkahead.sln /property:Configuration=Release``) -5. Try running the cli clients in ``.\build\Release\``. - -Known problems -^^^^^^^^^^^^^^ - -- Building the unit tests on Windows currently fails with linker errors. See - `#90 <https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib/-/issues/90>`__ +tool, which can be installed together with Visual Studio. + +1. Install Python and create a virtual environment with the dependencies in + `requirements.txt`. +2. In a PowerShell, activate the environment and run the following commands from the + repository root: +3. ``conan profile detect --force`` (and check the output) +3. ``make.ps1 conan-install`` +4. ``make.ps1 build`` + +You'll find the shared libraries and cli clients in ``.\build\Release\``. To run the tests, +use ``make.ps1 test``. As a shortcut to run all steps, use ``make.ps1 all``. + Troubleshooting ~~~~~~~~~~~~~~~ diff --git a/make.ps1 b/make.ps1 index 72c2230..64d73e6 100644 --- a/make.ps1 +++ b/make.ps1 @@ -2,6 +2,43 @@ param ( [string]$target ) +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=Release -s compiler.cppstd=17 + cmake --preset conan-default +} + +function Build-Project { + 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.sln)) { + Write-Output "Please run conan-install first." + exit 1 + } + msbuild .\build\liblinkahead.sln /property:Configuration=Release +} + +function Invoke-Tests { + Write-Output "Running tests..." + # check if build was run before + if (-not (Test-Path .\build\Release\linkahead.dll)) { + Write-Output "Please build the project first." + exit 1 + } + Set-Location .\build\ + ctest +} + # 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" @@ -20,46 +57,24 @@ Set-Location $currentPath switch ($target) { "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.sln)) { - Write-Output "Please run conan-install first." - exit 1 - } - msbuild .\build\liblinkahead.sln /property:Configuration=Release + Build-Project } "test" { - Write-Output "Running tests..." - # check if build was run before - if (-not (Test-Path .\build\Release\linkahead.dll)) { - Write-Output "Please build the project first." - exit 1 - } - Set-Location .\build\ - ctest - + Invoke-Tests } "conan-install" { - 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=Release -s compiler.cppstd=17 - cmake --preset conan-default + Install-Conan } "clean"{ Write-Output "Cleaning the project..." Remove-Item -Recurse -Force .\build\* } - + "all" { + Install-Conan + Build-Project + Invoke-Tests + } default { - Write-Output "Usage: .\script.ps1 [conan-install|build|test|clean]" + Write-Output "Usage: .\make.ps1 [all|conan-install|build|test|clean]" } } -- GitLab