diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2afdb5aeba5474c791927dfd254621fd1f584c67..b7c12bfcc9781c778fd0be29fe15ba80f381d8c5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,7 @@ endif(DEFINED CMAKE_BUILD_TYPE)
 project(gmsh CXX C)
 
 option(ENABLE_ANN "Enable ANN to compute Approximate Nearest Neighbors" ON)
-option(ENABLE_ARC "Enable ARC-related projects" OFF)
+option(ENABLE_ARC "Enable ARC-related binary targets" OFF)
 option(ENABLE_BLAS_LAPACK "Use BLAS/Lapack for basic linear algebra" ON)
 option(ENABLE_CGNS "Enable CGNS mesh export" OFF)
 option(ENABLE_CHACO "Enable Chaco mesh partitioner" ON)
@@ -686,6 +686,19 @@ if(EXTERNAL_INCLUDES)
   list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
 endif(EXTERNAL_INCLUDES)
 
+if(HAVE_FLTK)
+  set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} 
+                     ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
+elseif(HAVE_QT)
+  set(LINK_LIBRARIES ${QT_LIBRARIES} ${EXTERNAL_LIBRARIES}
+                     ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
+elseif(HAVE_OPENGL)
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
+                     ${LAPACK_LIBRARIES})
+else(HAVE_FLTK)
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+endif(HAVE_FLTK)
+
 # we could specify include dirs more selectively, but this is simpler
 include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser Plugin
   Post Qt contrib/ANN/include contrib/Chaco/main contrib/DiscreteIntegration
@@ -722,38 +735,20 @@ set_target_properties(shared PROPERTIES OUTPUT_NAME Gmsh)
 if(HAVE_LAPACK AND LAPACK_FLAGS)
   set_target_properties(shared PROPERTIES LINK_FLAGS ${LAPACK_FLAGS})
 endif(HAVE_LAPACK AND LAPACK_FLAGS)
-if(HAVE_FLTK)
-  target_link_libraries(shared ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} 
-                        ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
-elseif(HAVE_OPENGL)
-  target_link_libraries(shared ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
-                        ${LAPACK_LIBRARIES})
-else(HAVE_FLTK)
-  target_link_libraries(shared ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
-endif(HAVE_FLTK)
+target_link_libraries(shared ${LINK_LIBRARIES})
 
 # binary targets
 if(HAVE_FLTK)
   add_executable(gmsh WIN32 Fltk/Main.cpp ${GMSH_SRC})
-  target_link_libraries(gmsh ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} 
-                        ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
 elseif(HAVE_QT)
   qt4_wrap_cpp(GMSH_MOC_SRC ${GMSH_MOC_HDR})
   add_executable(gmsh WIN32 Qt/Main.cpp ${GMSH_SRC} ${GMSH_MOC_SRC})
-  target_link_libraries(gmsh ${QT_LIBRARIES} ${EXTERNAL_LIBRARIES}
-                        ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
 elseif(HAVE_OPENGL)
   add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
-  target_link_libraries(gmsh ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
-                        ${LAPACK_LIBRARIES})
 else(HAVE_FLTK)
   add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
-  target_link_libraries(gmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
 endif(HAVE_FLTK)
-
-if(ENABLE_ARC)
-  include(contrib/arc/CMakeLists.txt)
-endif(ENABLE_ARC)
+target_link_libraries(gmsh ${LINK_LIBRARIES})
 
 # increase stack to 16Mb on Windows to avoid overflows in recursive
 # tet classification for large 3D Delaunay grids
@@ -764,6 +759,11 @@ elseif(MSVC)
   set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216")
 endif(CYGWIN)
 
+# contrib binary targets
+if(ENABLE_ARC)
+  include(contrib/arc/CMakeLists.txt)
+endif(ENABLE_ARC)
+
 find_program(BISON bison)
 find_program(FLEX flex)
 if(BISON AND FLEX)
diff --git a/contrib/arc/CMakeLists.txt b/contrib/arc/CMakeLists.txt
index 75cb1ccfacf6c4ebfc2ad848410646d045ab5b24..e0e1264f9b40400adb88cebeaaf92869938620d9 100644
--- a/contrib/arc/CMakeLists.txt
+++ b/contrib/arc/CMakeLists.txt
@@ -1,10 +1,8 @@
-
-# pour boris!
-
+# pour boris:
 add_executable(boris EXCLUDE_FROM_ALL contrib/arc/boris.cpp ${GMSH_SRC})
-target_link_libraries(boris ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+target_link_libraries(boris ${LINK_LIBRARIES})
 
-# tests pour eric et christophe
+# tests pour eric et christophe:
 add_executable(elastic EXCLUDE_FROM_ALL contrib/arc/mainElasticity.cpp ${GMSH_SRC})
-target_link_libraries(elastic ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+target_link_libraries(elastic ${LINK_LIBRARIES})