diff --git a/.gitignore b/.gitignore
index fbb2e41a978ce5904a04ae55ecdc0b6b3d038787..d75afdff2e91d1fb976776cba6a24a008457d5a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,3 +45,6 @@ tex2pdf*
 # doxygen
 doxygen/*.md
 doxygen/xml
+
+# VS Code
+.vscode/ipch/
diff --git a/include/rew/decoder/physical_audio_source.h b/include/rew/decoder/physical_audio_source.h
index 9ff3d3e2f7649acc121567172dd97d52788f3613..abb84a73f5ab096dc0abcf4fb6e2b87b6688c4ea 100644
--- a/include/rew/decoder/physical_audio_source.h
+++ b/include/rew/decoder/physical_audio_source.h
@@ -1,12 +1,13 @@
 #ifndef REW_PHYSICAL_AUDIO_READER
 #define REW_PHYSICAL_AUDIO_READER
 
-#include "../common/output.h"
-#include "../common/audio_device.h"
 #include <vector>
 #include <mutex>
 #include <queue>
 #include <array>
+#include <condition_variable>
+#include "../common/output.h"
+#include "../common/audio_device.h"
 
 #ifndef PORTAUDIO_H
 typedef void PaStream;
diff --git a/include/rew/encoder/physical_audio_sink.h b/include/rew/encoder/physical_audio_sink.h
index 3389b1a10856ec9fff0a523fff1ad4aacf4e94d1..7f0530fe6decec0a51f6237f356a3e7ede93d8bc 100644
--- a/include/rew/encoder/physical_audio_sink.h
+++ b/include/rew/encoder/physical_audio_sink.h
@@ -1,11 +1,12 @@
 #ifndef REW_PHYSICAL_AUDIO_SINK
 #define REW_PHYSICAL_AUDIO_SINK
 
-#include "../common/output.h"
-#include "../common/audio_device.h"
 #include <mutex>
 #include <queue>
 #include <vector>
+#include <condition_variable>
+#include "../common/output.h"
+#include "../common/audio_device.h"
 
 #ifndef PORTAUDIO_H
 typedef void PaStream;
diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt
index f5fc8e732733baa76fe3e3fdb16e90b186a428fe..00aa3369739131ffde467a752bfe0b938677aee2 100644
--- a/libs/CMakeLists.txt
+++ b/libs/CMakeLists.txt
@@ -5,7 +5,7 @@ include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
 ExternalProject_Add(ZLIB
   DOWNLOAD_COMMAND ""
   SOURCE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib
-  CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true
+  CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true -DCMAKE_SH="CMAKE_SH-NOTFOUND"
   BUILD_COMMAND cmake --build . --target zlibstatic --config MinSizeRel
   INSTALL_COMMAND ""
   TEST_COMMAND ""
@@ -25,7 +25,7 @@ endif()
 ExternalProject_Add(PortAudio
   DOWNLOAD_COMMAND ""
   SOURCE_DIR ${CMAKE_SOURCE_DIR}/libs/portaudio
-  CMAKE_ARGS --DPA_BUILD_SHARED=OFF -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true -DPA_BUILD_STATIC=ON -DPA_BUILD_TESTS=OFF -DPA_BUILD_EXAMPLES=OFF
+  CMAKE_ARGS --DPA_BUILD_SHARED=OFF -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true -DPA_BUILD_STATIC=ON -DPA_BUILD_TESTS=OFF -DPA_BUILD_EXAMPLES=OFF -DCMAKE_SH="CMAKE_SH-NOTFOUND"
   BUILD_COMMAND cmake --build . --target portaudio_static --config MinSizeRel
   INSTALL_COMMAND ""
   TEST_COMMAND ""
@@ -33,13 +33,14 @@ ExternalProject_Add(PortAudio
 
 if(MSVC)
   set(PORTAUDIO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/portaudio/include ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build PARENT_SCOPE)
-  set(PORTAUDIO_LIBRARY ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build/MinSizeRel/portaudio_static_x86.lib PARENT_SCOPE)
-elseif(MINGW)
-  #set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build PARENT_SCOPE)
-  #set(ZLIB_LIBRARY ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build/libzlibstatic.a PARENT_SCOPE)
+  if (CMAKE_CL_64)
+    set(PORTAUDIO_LIBRARY ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build/MinSizeRel/portaudio_static_x64.lib PARENT_SCOPE)
+  else()
+    set(PORTAUDIO_LIBRARY ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build/MinSizeRel/portaudio_static_x86.lib PARENT_SCOPE)
+  endif()
 else()
-  #set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build PARENT_SCOPE)
-  #set(ZLIB_LIBRARY ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build/libz.a PARENT_SCOPE)
+  set(PORTAUDIO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/portaudio/include ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build PARENT_SCOPE)
+  set(PORTAUDIO_LIBRARY ${CMAKE_BINARY_DIR}/libs/PortAudio-prefix/src/PortAudio-build/libportaudio.a PARENT_SCOPE)
 endif()
 
 # Add third party libraries which do not need compilation step
diff --git a/src/rew/decoder/CMakeLists.txt b/src/rew/decoder/CMakeLists.txt
index e2981e3893bf7c7603d485d98e9b19a6fbdcb2d4..c6693daf2ce87ae29b0ebc9f360fd01537cb981c 100644
--- a/src/rew/decoder/CMakeLists.txt
+++ b/src/rew/decoder/CMakeLists.txt
@@ -23,10 +23,13 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${PORTAUDIO_INCLUDE_DIR})
 target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)
 
 target_link_libraries(${PROJECT_NAME} ${ZLIB_LIBRARY} ${PORTAUDIO_LIBRARY})
-add_dependencies(${PROJECT_NAME} ZLIB)
+add_dependencies(${PROJECT_NAME} ZLIB PortAudio)
 
 if(WIN32)
-    target_link_libraries(${PROJECT_NAME} wsock32 ws2_32)
+  target_link_libraries(${PROJECT_NAME} wsock32 ws2_32)
+endif()
+if(MINGW)
+  target_link_libraries(${PROJECT_NAME} Winmm SetupAPI)
 endif()
 
 set(DECODER_PROJECT ${PROJECT_NAME} PARENT_SCOPE)
diff --git a/src/rew/encoder/CMakeLists.txt b/src/rew/encoder/CMakeLists.txt
index 1f54883d46f22253ad9ef89ca1a41e16a7693e32..8d4457284861beb32674eb76488d9a83b0f0e454 100644
--- a/src/rew/encoder/CMakeLists.txt
+++ b/src/rew/encoder/CMakeLists.txt
@@ -22,7 +22,12 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${PORTAUDIO_INCLUDE_DIR})
 target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)
 
 target_link_libraries(${PROJECT_NAME} ${ZLIB_LIBRARY} ${PORTAUDIO_LIBRARY})
-add_dependencies(${PROJECT_NAME} ZLIB)
+add_dependencies(${PROJECT_NAME} ZLIB PortAudio)
+
+if(MINGW)
+  target_link_libraries(${PROJECT_NAME} Winmm SetupAPI)
+endif()
+
 
 set(ENCODER_PROJECT ${PROJECT_NAME} PARENT_SCOPE)
 set(ENCODER_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/encoder PARENT_SCOPE)