diff --git a/share/FindLustre.cmake b/share/FindLustre.cmake
index bb0cfb4fced4eb3027892d9f6d329c9c68362999..49ca9f005cc846678e31e94b93b9523ed757f1ca 100644
--- a/share/FindLustre.cmake
+++ b/share/FindLustre.cmake
@@ -82,7 +82,7 @@ function(Lustre_Compile)
   endif()
 
   if(LUS_NODE)
-    set(LUSTRE_NODE_OPT "-node ${LUS_NODE}")
+    set(LUSTRE_NODE_OPT "-node;${LUS_NODE}")
     set(LUSTRE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/lus_${LUS_LIBNAME}/${LUS_NODE}")
   else()
     set(LUSTRE_NODE_OPT "")
@@ -90,7 +90,7 @@ function(Lustre_Compile)
   endif()
 
   if (LUS_VERBOSE)
-    set(LUSTRE_VERBOSE_OPT "-verbose ${LUS_VERBOSE}")
+    set(LUSTRE_VERBOSE_OPT "-verbose;${LUS_VERBOSE}")
   else()
     # the default is to be quiet.
     set(LUSTRE_VERBOSE_OPT "-verbose;0")
@@ -105,6 +105,10 @@ function(Lustre_Compile)
     get_filename_component(E ${LFILE} EXT)
     if ("${E}" STREQUAL ".lus")
       set(LUSTRE_GENERATED_FILES ${LUSTRE_OUTPUT_DIR}/${L}.h ${LUSTRE_OUTPUT_DIR}/${L}.c ${LUSTRE_OUTPUT_DIR}/${L}_alloc.h)
+      if(LUS_NODE)
+         list(APPEND LUSTRE_GENERATED_FILES ${LUSTRE_OUTPUT_DIR}/${L}_main.c)
+         list(APPEND LUSTRE_GENERATED_FILES ${LUSTRE_INCLUDE_DIR}/io_frontend.c)
+      endif()
     elseif("${E}" STREQUAL ".lusi")
       set(LUSTRE_GENERATED_FILES ${LUSTRE_OUTPUT_DIR}/${L}.h)
     endif()
@@ -121,9 +125,15 @@ function(Lustre_Compile)
   endforeach()
 
   include_directories(${LUSTRE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${LUSTRE_OUTPUT_DIR})
+  if(LUS_NODE)
+  add_executable(${LUS_LIBNAME}
+              ${GLOBAL_LUSTRE_GENERATED_C_FILES} ${LUS_USER_C_FILES}
+              )
+  else()
   add_library(${LUS_LIBNAME} SHARED
               ${GLOBAL_LUSTRE_GENERATED_C_FILES} ${LUS_USER_C_FILES}
               )
+  endif()
   set_target_properties(${LUS_LIBNAME} PROPERTIES COMPILE_FLAGS "-std=c99")
   set(LUSTRE_GENERATED_C_FILES_${LUS_LIBNAME} "${GLOBAL_LUSTRE_GENERATED_C_FILES}" PARENT_SCOPE)
   message(STATUS "Lustre: Added rule for building lustre library: ${LUS_LIBNAME}")