diff --git a/cmake/modules/FindIPOpt.cmake b/cmake/modules/FindIPOpt.cmake
index 38f276c7c8a6f01bd604bd727a053c41c503cf7e..4c885f076debec4cda890f2bec99a046768b27e5 100644
--- a/cmake/modules/FindIPOpt.cmake
+++ b/cmake/modules/FindIPOpt.cmake
@@ -8,18 +8,33 @@ find_library(DL_LIBRARY dl)
 
 find_path(IPOPT_INCLUDE_DIR
   NAMES "IpNLP.hpp"
+  PATHS ${IPOPT_ROOT}
   PATH_SUFFIXES "include" "include/coin"
+  NO_DEFAULT_PATH
+)
+find_path(IPOPT_INCLUDE_DIR
+  NAMES "IpNLP.hpp"
 )
 
 find_library(IPOPT_LIBRARY
   NAMES ipopt
+  PATHS ${IPOPT_ROOT}
   PATH_SUFFIXES "lib"
+  NO_DEFAULT_PATH
+)
+find_library(IPOPT_LIBRARY
+  NAMES ipopt
 )
 
 # If you want to want to use other linear solver
 find_library(HSL_LIBRARY
   NAMES hsl coinhsl
+  PATHS ${IPOPT_ROOT}
   PATH_SUFFIXES "lib"
+  NO_DEFAULT_PATH
+)
+find_library(HSL_LIBRARY
+  NAMES hsl coinhsl
 )
 
 find_package_handle_standard_args(hsl DEFAULT_MSG HSL_LIBRARY)