diff --git a/.github/workflows/ba-windows.yml b/.github/workflows/ba-windows.yml
index 613134dff0c4bf40478747b89b6e11498919654c..efd347dfa9b08e121d06b38fb65ec25a662177c5 100644
--- a/.github/workflows/ba-windows.yml
+++ b/.github/workflows/ba-windows.yml
@@ -67,6 +67,22 @@ jobs:
         dir deps/include
         dir deps/lib
 
+    - name: setup Eigen3
+      shell: powershell
+      run: |
+        Get-Date -Format G
+        $Env:Path += ";C:\msys64\usr\bin"
+        cd ${{github.workspace}}
+        mkdir eigen
+        Get-Date -Format G
+        wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip -O ${{runner.temp}}\eigen.zip
+        Get-Date -Format G
+        7z x ${{runner.temp}}\eigen.zip -oeigen
+        Get-Date -Format G
+        dir eigen
+        dir eigen/eigen-3.3.7
+        dir eigen/eigen-3.3.7/Eigen/src
+
     - name: Install Python packages
       run: |
         python -m pip install --upgrade pip
@@ -132,13 +148,14 @@ jobs:
       run: |
         call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
         set OPTLIBS=${{github.workspace}}\deps
+        set EIGENDIR=${{github.workspace}}\eigen\eigen-3.3.7
         set QTDIR=${{github.workspace}}\qt5\Qt\5.14.2\msvc2017_64
         set PATH=${{github.workspace}};%OPTLIBS%\lib;%QTDIR%\bin;%PATH%
         cd ${{github.workspace}}
         dir
         mkdir build
         cd build
-        cmake -G "Visual Studio 16 2019" -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_INCLUDE_PATH=%OPTLIBS%/include -DCMAKE_LIBRARY_PATH=%OPTLIBS%/lib -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" ..
+        cmake -G "Visual Studio 16 2019" -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_INCLUDE_PATH=%OPTLIBS%/include -DCMAKE_LIBRARY_PATH=%OPTLIBS%/lib -DEIGEN3_INCLUDE_DIRS=%EIGENDIR% -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" ..
         ccache -z
         ccache -p
         cmake --build . --config Release -j4
diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt
index 13008419645622122ddc6602d339307a4e4cfce6..e5f7e49084de4010a2feed48793745f5984e5026 100644
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@ -153,7 +153,7 @@ target_include_directories(${library_name}
     ${tspectrum_INCLUDE_DIR}
     ${Cerf_INCLUDE_DIR}
     ${CMAKE_SOURCE_DIR}/ThirdParty/Core/cerf_wrapper # TEMPORARY
-    SYSTEM PUBLIC ${EIGEN3_INCLUDE_DIR}
+    SYSTEM PUBLIC ${EIGEN3_INCLUDE_DIRS}
     )
 target_link_libraries(${library_name} ${Boost_LIBRARIES} ${FFTW3_LIBRARIES} ${GSL_LIBRARIES}
     ${tspectrum_LIBRARY} ${Cerf_LIBRARIES})
diff --git a/Examples/cpp/CylindersAndPrisms/CMakeLists.txt b/Examples/cpp/CylindersAndPrisms/CMakeLists.txt
index 3094bc295136d86f39378b7b64c52cdaba40d8e3..9805e8f2a48031bda0754e2dbc84565604266839 100644
--- a/Examples/cpp/CylindersAndPrisms/CMakeLists.txt
+++ b/Examples/cpp/CylindersAndPrisms/CMakeLists.txt
@@ -22,11 +22,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../modules)
 find_package(BornAgain REQUIRED)
 find_package(Eigen3 REQUIRED)
 
-include_as_system_directory("${EIGEN3_INCLUDE_DIR}")
-include_directories(
-    ${BORNAGAIN_INCLUDE_DIR}
-)
+include_as_system_directory("${EIGEN3_INCLUDE_DIRS}")
+include_directories(${BORNAGAIN_INCLUDE_DIR})
 
-target_link_libraries(CylindersAndPrisms
-    ${BORNAGAIN_LIBRARIES}
-)
+target_link_libraries(CylindersAndPrisms ${BORNAGAIN_LIBRARIES})
diff --git a/Tests/Functional/Core/MPI/CMakeLists.txt b/Tests/Functional/Core/MPI/CMakeLists.txt
index ce919177e1dfaeccbb6cba92b559a75ecd20b2f7..7d804db79765cf3720a4761ed62f7a8b81d01926 100644
--- a/Tests/Functional/Core/MPI/CMakeLists.txt
+++ b/Tests/Functional/Core/MPI/CMakeLists.txt
@@ -7,7 +7,7 @@ find_package(MPI REQUIRED)
 # include dirs
 include_directories(
     ${MPI_CXX_INCLUDE_PATH}
-    ${EIGEN3_INCLUDE_DIR}
+    ${EIGEN3_INCLUDE_DIRS}
     ${BornAgainCore_INCLUDE_DIRS}
     )
 
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
index fad9bcf76da9e1141c5b4ae444d49e6128270fcb..8513ee8b911ecef5bfccf660b42a20d3c4fa9c28 100644
--- a/cmake/modules/SearchInstalledSoftware.cmake
+++ b/cmake/modules/SearchInstalledSoftware.cmake
@@ -7,7 +7,11 @@ endif()
 find_package(Threads REQUIRED)
 find_package(FFTW3 REQUIRED)
 find_package(GSL REQUIRED)
-find_package(Eigen3 3.3 REQUIRED) # no need for FindEigen3, as Eigen provides Eigen3Config.cmake
+if(WIN32)
+    message("Eigen3 include dirs hopefully given on the command line: ${EIGEN3_INCLUDE_DIRS}")
+else()
+    find_package(Eigen3 3.3 REQUIRED) # no need for FindEigen3, as Eigen provides Eigen3Config.cmake
+endif()
 
 find_package(Cerf REQUIRED)
 message(STATUS "Cerf found=${Cerf_FOUND} lib=${Cerf_LIBRARIES} inc=${Cerf_INCLUDE_DIR} version={Cerf_VERSION}")