diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9f17477ce..251ab4191 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -108,28 +108,15 @@ target_link_libraries(${PROJECT_NAME} metis)
set_property(TARGET ${PROJECT_NAME} PROPERTY ENABLE_EXPORTS 1)
if (USE_MPI)
- add_executable(solver.pardiso Toolbox/solver.pardiso.cpp)
- add_executable(tester.pardiso Toolbox/tester.pardiso.cpp)
- add_dependencies(tester.pardiso solver.pardiso)
- if (COMPILER_IDENTIFIER MATCHES "(linux|mac)")
- target_link_libraries(solver.pardiso mpi)
- target_link_libraries(tester.pardiso mpi)
- target_link_libraries(${PROJECT_NAME} mpi)
- if (NOT USE_INTEL_MPI)
- target_link_libraries(solver.pardiso mpi_cxx mpi_mpifh)
- target_link_libraries(tester.pardiso mpi_cxx mpi_mpifh)
- target_link_libraries(${PROJECT_NAME} mpi_cxx mpi_mpifh)
- else ()
- target_link_libraries(solver.pardiso mpifort)
- target_link_libraries(tester.pardiso mpifort)
- target_link_libraries(${PROJECT_NAME} mpifort)
- endif ()
+ if (NOT COMPILER_IDENTIFIER MATCHES "(linux|mac)") # windows only support intel mpi
+ set(MPI_LIBS impi impicxx)
+ elseif (USE_INTEL_MPI)
+ set(MPI_LIBS mpi mpifort)
else ()
- target_link_libraries(solver.pardiso impi impicxx)
- target_link_libraries(tester.pardiso impi impicxx)
- target_link_libraries(${PROJECT_NAME} impi impicxx)
+ set(MPI_LIBS mpi mpi_cxx mpi_mpifh)
endif ()
- add_dependencies(${PROJECT_NAME} solver.pardiso)
+ add_subdirectory(MPI)
+ target_link_libraries(${PROJECT_NAME} ${MPI_LIBS})
endif ()
if (COMPILER_IDENTIFIER MATCHES "(linux|mac)")
diff --git a/MPI/CMakeLists.txt b/MPI/CMakeLists.txt
new file mode 100644
index 000000000..fe038f0e5
--- /dev/null
+++ b/MPI/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.0)
+
+project(mpi-solver)
+
+add_executable(solver.pardiso solver.pardiso.cpp)
+add_executable(tester.pardiso tester.pardiso.cpp)
+
+target_link_libraries(solver.pardiso ${MPI_LIBS})
+target_link_libraries(tester.pardiso ${MPI_LIBS})
+
+add_dependencies(tester.pardiso solver.pardiso)
+
+add_dependencies(suanPan solver.pardiso)
diff --git a/Toolbox/solver.pardiso.cpp b/MPI/solver.pardiso.cpp
similarity index 100%
rename from Toolbox/solver.pardiso.cpp
rename to MPI/solver.pardiso.cpp
diff --git a/Toolbox/tester.pardiso.cpp b/MPI/tester.pardiso.cpp
similarity index 100%
rename from Toolbox/tester.pardiso.cpp
rename to MPI/tester.pardiso.cpp
diff --git a/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj b/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj
index 1372e83bd..606fae239 100644
--- a/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj
+++ b/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj
@@ -11,7 +11,7 @@
-
+
16.0
diff --git a/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj.filters b/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj.filters
index 82e19abfc..d81b308f0 100644
--- a/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj.filters
+++ b/MSVC/suanPan/solver.pardiso/solver.pardiso.vcxproj.filters
@@ -7,7 +7,7 @@
-
+
SRC
diff --git a/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj b/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj
index cfdb8ce2f..ed37294a6 100644
--- a/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj
+++ b/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj
@@ -11,7 +11,7 @@
-
+
16.0
diff --git a/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj.filters b/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj.filters
index 767946c59..cf353f081 100644
--- a/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj.filters
+++ b/MSVC/suanPan/tester.pardiso/tester.pardiso.vcxproj.filters
@@ -7,7 +7,7 @@
-
+
SRC