Skip to content

Windows Powershell Script

Greg Sjaardema edited this page May 14, 2025 · 2 revisions

Script provided by a user ---

I need a way to build SEACAS + dependencies on Windows relying on Powershell alone without Bash. I might be mistaken, but it looks like the Windows support currently relies on mingw/msys/etc, so I put together the script below to download, build and install the various dependencies. I don't have the bandwidth to port/maintain the full complexity of install_tpl.sh and support all options, but wanted to share what I have working in case it's useful. This builds everything statically and patches upstream/mainline CGNS and NetCDF to workaround https://github.com/HDFGroup/hdf5/issues/5525.

# Specify installation path
$Env:SEACAS_INSTALL_PATH="C:/seacas_install"
#
#
# libaec
#
curl https://gitlab.dkrz.de/k202009/libaec/-/archive/v1.1.3/libaec-v1.1.3.zip -o libaec.zip
Expand-Archive .\libaec.zip
cd libaec
cd libaec-v1.1.3
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DBUILD_TESTING=OFF ..
cmake --build . --target install --config Release
cd ../../..
#
# zlib
#
curl https://github.com/madler/zlib/archive/refs/tags/v1.3.1.zip -o zlib.zip
Expand-Archive zlib.zip
cd zlib
cd zlib-1.3.1
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DZLIB_BUILD_EXAMPLES=OFF .. 
cmake --build . --target install --config Release
cd ../../..
#
# HDF5
#
curl https://github.com/HDFGroup/hdf5/archive/refs/tags/hdf5_1.14.6.zip -o hdf5.zip
Expand-Archive .\hdf5.zip
cd hdf5
cd hdf5-hdf5_1.14.6
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DBUILD_TESTING=OFF -DHDF5_BUILD_EXAMPLES=OFF -DHDF5_BUILD_UTILS=OFF -DHDF5_BUILD_TOOLS=OFF  -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DSZIP_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/szip-static.lib -DSZIP_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -DZLIB_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/zlibstatic.lib -DZLIB_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -DHDF5_USE_LIBAEC_STATIC=ON -Dlibaec_DIR="$Env:SEACAS_INSTALL_PATH"/cmake -Dlibaec_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -Dlibaec_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/aec-static.lib ..
cmake --build . --parallel --target install --config Release
cd ../../..
#
# CGNS
#
# release is broken with newer zlib
#curl https://github.com/CGNS/CGNS/archive/refs/tags/v4.5.0.zip -o cgns.zip
#Expand-Archive .\cgns.zip
#cd cgns
#cd CGNS-4.5.0
#  requires  https://github.com/CGNS/CGNS/pull/834
git clone --depth=1 https://github.com/andrewcorrigan/CGNS
cd CGNS
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DCGNS_BUILD_SHARED=OFF -DHDF5_DIR="$Env:SEACAS_INSTALL_PATH"/cmake -DHDF5_NEED_SZIP=ON -DHDF5_NEED_ZLIB=ON -DZLIB_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/zlibstatic.lib -DSZIP_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/szip-static.lib -Dlibaec_DIR="$Env:SEACAS_INSTALL_PATH"/cmake -Dlibaec_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -Dlibaec_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/aec-static.lib ..
cmake --build . --parallel --target install --config Release
cd ../..
#
# Netcdf
#
curl https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.9.3.zip -o netcdf.zip
Expand-Archive .\netcdf.zip
cd netcdf
cd netcdf-c-4.9.3
# BEGIN PATCH
# upstream is broken: https://github.com/Unidata/netcdf-c/issues/3129
cd cmake
rm .\modules\FindZLIB.cmake
rm .\dependencies.cmake
curl https://raw.githubusercontent.com/andrewcorrigan/netcdf-c/refs/heads/main/cmake/dependencies.cmake -o dependencies.cmake
cd ..
# END PATCH
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_TESTSETS=OFF -DNETCDF_ENABLE_TESTS=OFF -DNETCDF_ENABLE_UNIT_TESTS=OFF -DNETCDF_ENABLE_FILTER_TESTING=OFF -DNETCDF_ENABLE_FILTER_ZSTD=OFF -DNETCDF_ENABLE_FILTER_BZ2=OFF -DNETCDF_ENABLE_DAP=OFF -DNETCDF_ENABLE_BYTERANGE=OFF -DNETCDF_ENABLE_NCZARR=OFF -DNETCDF_ENABLE_BLOSC=OFF -DNETCDF_ENABLE_FILTER_BLOSC=OFF -DNETCDF_ENABLE_LIBXML2=OFF -DNETCDF_ENABLE_NCZARR_FILTERS=OFF -DNETCDF_ENABLE_V2_API=OFF -DNETCDF_ENABLE_LIB=OFF -DNETCDF_ENABLE_BASH_SCRIPT_TESTING=OFF -DNETCDF_BUILD_UTILITIES=OFF -DHDF5_DIR="$Env:SEACAS_INSTALL_PATH"/cmake -DHDF5_C_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -DHDF5_hdf5_LIBRARY_RELEASE="$Env:SEACAS_INSTALL_PATH"/lib/libhdf5.lib -DHDF5_hdf5_hl_LIBRARY_RELEASE="$Env:SEACAS_INSTALL_PATH"/lib/libhdf5_hl.lib -DZLIB_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/zlibstatic.lib -DZLIB_INCLUDE_DIR="$Env:SEACAS_INSTALL_PATH"/include -DSzip_DEBUG_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/szip-static.lib -DSzip_RELEASE_LIBRARY="$Env:SEACAS_INSTALL_PATH"/lib/szip-static.lib -DSzip_INCLUDE_DIRS="$Env:SEACAS_INSTALL_PATH"/include ..
cmake --build . --parallel --target install --config Release 
cd ../../..
#
# Seacas
#
git clone --depth=1 https://github.com/sandialabs/seacas
cd seacas
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$Env:SEACAS_INSTALL_PATH" -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DSeacas_ENABLE_SEACASExodus=ON -DSEACASExodus_ENABLE_HDF5=ON -DHDF5_DIR="$Env:SEACAS_INSTALL_PATH"/cmake -DTPL_HDF5_LIBRARIES="$Env:SEACAS_INSTALL_PATH"/lib/libhdf5.lib -DTPL_HDF5_INCLUDE_DIRS="$Env:SEACAS_INSTALL_PATH"/include -DTPL_Netcdf_INCLUDE_DIRS="$Env:SEACAS_INSTALL_PATH"/include -DTPL_Netcdf_LIBRARIES="$Env:SEACAS_INSTALL_PATH"/lib/netcdf.lib ..
cmake --build . --parallel --target install --config Release
cd ../..
Clone this wiki locally