Allow tests on Windows to be run from ctest
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b46e1e..280d50d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,15 +8,9 @@
 
 # Find Apache Runtime
 find_package(APR QUIET)
-# If APR find module sets the cache, the following will do nothing
-find_path(APR_INCLUDE_DIR apr.h PATH_SUFFIXES apr-1)
-find_library(APR_LIBRARIES NAMES libapr-1 apr-1)
 
 # Find Apache Runtime Utilities
 find_package(APR-Util QUIET)
-# If APR-UTIL find module sets the cache, the following will do nothing
-find_path(APR_UTIL_INCLUDE_DIR apu.h PATH_SUFFIXES apr-1)
-find_library(APR_UTIL_LIBRARIES NAMES libaprutil-1 aprutil-1)
 
 # Building
 add_subdirectory(src)
diff --git a/src/cmake/FindAPR-Util.cmake b/src/cmake/FindAPR-Util.cmake
index 3485911..9b1ec68 100644
--- a/src/cmake/FindAPR-Util.cmake
+++ b/src/cmake/FindAPR-Util.cmake
@@ -4,6 +4,7 @@
 # This module defines
 # APR_UTIL_INCLUDE_DIR, where to find apr.h, etc.
 # APR_UTIL_LIBRARIES, the libraries to link against to use APR.
+# APR_UTIL_DLL_DIR, where to find libaprutil-1.dll
 # APR_UTIL_FOUND, set to yes if found
 
 macro(_apu_invoke _varname)
@@ -34,6 +35,10 @@
 if(EXISTS ${APR_UTIL_CONFIG_EXECUTABLE})
     _apu_invoke(APR_UTIL_INCLUDE_DIR   --includedir)
     _apu_invoke(APR_UTIL_LIBRARIES     --link-ld)
+else()
+    find_path(APR_UTIL_INCLUDE_DIR apu.h PATH_SUFFIXES apr-1)
+    find_library(APR_UTIL_LIBRARIES NAMES libaprutil-1 aprutil-1)
+    find_path(APR_UTIL_DLL_DIR libaprutil-1.dll)
 endif()
 
 find_package_handle_standard_args(apr-util DEFAULT_MSG
diff --git a/src/cmake/FindAPR.cmake b/src/cmake/FindAPR.cmake
index 171d745..7678519 100644
--- a/src/cmake/FindAPR.cmake
+++ b/src/cmake/FindAPR.cmake
@@ -4,6 +4,7 @@
 # This module defines
 # APR_INCLUDE_DIR, where to find apr.h, etc.
 # APR_LIBRARIES, the libraries to link against to use APR.
+# APR_DLL_DIR, where to find libapr-1.dll
 # APR_FOUND, set to 'yes' if found
 macro(_apr_invoke _varname)
     execute_process(
@@ -33,6 +34,10 @@
 if(EXISTS ${APR_CONFIG_EXECUTABLE})
     _apr_invoke(APR_INCLUDE_DIR  --includedir)
     _apr_invoke(APR_LIBRARIES  --link-ld)
+else()
+    find_path(APR_INCLUDE_DIR apr.h PATH_SUFFIXES apr-1)
+    find_library(APR_LIBRARIES NAMES libapr-1 apr-1)
+    find_path(APR_DLL_DIR libapr-1.dll)
 endif()
 
 find_package_handle_standard_args(apr
diff --git a/src/test/cpp/CMakeLists.txt b/src/test/cpp/CMakeLists.txt
index bbe01e3..8d5cfbe 100644
--- a/src/test/cpp/CMakeLists.txt
+++ b/src/test/cpp/CMakeLists.txt
@@ -57,18 +57,26 @@
         WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../resources
     )
 
-    if(${testName} STREQUAL socketservertestcase)
-        set_tests_properties(socketservertestcase PROPERTIES
-            ENVIRONMENT "SOCKET_SERVER_COMMAND=$<JOIN:${START_SOCKET_SERVER_COMMAND}, >"
-        )
-    else()
-       set_tests_properties(${testName} PROPERTIES
-            ENVIRONMENT "TOTO=wonderful;key1=value1;key2=value2"
-       )
-    endif()
     if(WIN32)
-      set_tests_properties(${testName} PROPERTIES ENVIRONMENT
-        "PATH=$<SHELL_PATH:$<TARGET_FILE_DIR:log4cxx>>$<SEMICOLON>$ENV{PATH}"
-      )
+        set(LOG4CXX_DLL_DIR "$<SHELL_PATH:$<TARGET_FILE_DIR:log4cxx>>")
+        if(${testName} STREQUAL socketservertestcase)
+            set_tests_properties(socketservertestcase PROPERTIES
+                ENVIRONMENT "SOCKET_SERVER_COMMAND=$<JOIN:${START_SOCKET_SERVER_COMMAND}, >;PATH=${LOG4CXX_DLL_DIR}\;${APR_DLL_DIR}\;${APR_UTIL_DLL_DIR}"
+            )
+        else()
+           set_tests_properties(${testName} PROPERTIES
+                ENVIRONMENT "TOTO=wonderful;key1=value1;key2=value2;PATH==${LOG4CXX_DLL_DIR}\;${APR_DLL_DIR}\;${APR_UTIL_DLL_DIR}"
+           )
+        endif()
+    else()
+        if(${testName} STREQUAL socketservertestcase)
+            set_tests_properties(socketservertestcase PROPERTIES
+                ENVIRONMENT "SOCKET_SERVER_COMMAND=$<JOIN:${START_SOCKET_SERVER_COMMAND}, >"
+            )
+        else()
+           set_tests_properties(${testName} PROPERTIES
+                ENVIRONMENT "TOTO=wonderful;key1=value1;key2=value2"
+           )
+        endif()
     endif()
 endforeach()