diff -ruN b/CMake/macros.cmake a/CMake/macros.cmake
--- b/CMake/macros.cmake	2019-03-03 09:40:23.000000000 +0100
+++ a/CMake/macros.cmake	2019-03-10 21:58:32.895224605 +0100
@@ -22,11 +22,7 @@
 #######################################################################
 macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
 
-    if (${LIBTYPE} STREQUAL "SHARED")
-        set (LIBRARY_NAME ${LIBNAME}_SHARED)
-    else ()
-        set (LIBRARY_NAME ${LIBNAME})
-    endif (${LIBTYPE} STREQUAL "SHARED")
+    set (LIBRARY_NAME ${LIBNAME}_${LIBTYPE})
 
     if (MSVC)
 	set (LIBRARY_NAME_DEBUG "${LIBRARY_NAME}d")
@@ -38,7 +34,7 @@
 
     set_target_properties(${LIBRARY_NAME}
         PROPERTIES
-        OUTPUT_NAME ${LIBRARY_NAME}
+        OUTPUT_NAME ${LIBNAME}
         DEBUG_OUTPUT_NAME ${LIBRARY_NAME_DEBUG}
         CLEAN_DIRECT_OUTPUT TRUE
         COMPILE_DEFINITIONS "FL_LIBRARY"
@@ -47,6 +43,7 @@
     if (${LIBTYPE} STREQUAL "SHARED")
 	set_target_properties(${LIBRARY_NAME}
 	    PROPERTIES
+      OUTPUT_NAME ${LIBNAME}
 	    VERSION ${FLTK_VERSION_FULL}
 	    SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
 	    PREFIX "lib"    # for MSVC static/shared coexistence
diff -ruN b/documentation/CMakeLists.txt a/documentation/CMakeLists.txt
--- b/documentation/CMakeLists.txt	2019-03-03 09:40:23.000000000 +0100
+++ a/documentation/CMakeLists.txt	2019-03-10 22:40:51.077135317 +0100
@@ -45,7 +45,7 @@
 	${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
 	WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 	COMMENT "Generating HTML documentation" VERBATIM
-	DEPENDS fltk
+  DEPENDS fltk_STATIC
 	)
 
 endif(OPTION_BUILD_HTML_DOCUMENTATION)
@@ -92,7 +92,7 @@
 	COMMAND cp -f latex/refman.pdf fltk.pdf
 	WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 	COMMENT "Generating PDF documentation" VERBATIM
-	DEPENDS fltk
+  DEPENDS fltk_STATIC
 	)
 
     # add target 'pdf'
diff -ruN b/fluid/CMakeLists.txt a/fluid/CMakeLists.txt
--- b/fluid/CMakeLists.txt	2019-03-03 09:40:23.000000000 +0100
+++ a/fluid/CMakeLists.txt	2019-03-10 22:09:52.482801651 +0100
@@ -48,7 +48,7 @@
     add_executable(fluid WIN32 ${CPPFILES})
 endif(APPLE AND NOT OPTION_APPLE_X11)
 
-target_link_libraries(fluid fltk fltk_images fltk_forms)
+target_link_libraries(fluid fltk_STATIC fltk_images_STATIC fltk_forms_STATIC)
 
 # install fluid
 
diff -ruN b/src/CMakeLists.txt a/src/CMakeLists.txt
--- b/src/CMakeLists.txt	2019-03-03 09:40:23.000000000 +0100
+++ a/src/CMakeLists.txt	2019-03-10 22:57:37.458302812 +0100
@@ -246,7 +246,7 @@
 endif (WIN32)
 
 if (FLTK_HAVE_CAIRO)
-    list(APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES})
+  list(APPEND OPTIONAL_LIBS fltk_cairo_STATIC ${PKG_CAIRO_LIBRARIES})
 ENDif (FLTK_HAVE_CAIRO)
 
 if (HAVE_XINERAMA)
@@ -275,41 +275,41 @@
 #######################################################################
 
 FL_ADD_LIBRARY(fltk STATIC "${STATIC_FILES}")
-target_link_libraries(fltk ${OPTIONAL_LIBS})
+target_link_libraries(fltk_STATIC ${OPTIONAL_LIBS})
 
 #######################################################################
 
 FL_ADD_LIBRARY(fltk_forms STATIC "${FLCPPFILES}")
-target_link_libraries(fltk_forms fltk)
+target_link_libraries(fltk_forms_STATIC fltk_STATIC)
 
 #######################################################################
 
 FL_ADD_LIBRARY(fltk_images STATIC "${IMGCPPFILES}")
-target_link_libraries(fltk_images fltk)
+target_link_libraries(fltk_images_STATIC fltk_STATIC)
 
 if (OPTION_USE_SYSTEM_LIBJPEG)
-    target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES})
+  target_link_libraries(fltk_images_STATIC ${FLTK_JPEG_LIBRARIES})
 else()
-    target_link_libraries(fltk_images fltk_jpeg)
+  target_link_libraries(fltk_images_STATIC fltk_jpeg_STATIC)
 endif (OPTION_USE_SYSTEM_LIBJPEG)
 
 if (OPTION_USE_SYSTEM_ZLIB)
-    target_link_libraries(fltk_images ${FLTK_ZLIB_LIBRARIES})
+  target_link_libraries(fltk_images_STATIC ${FLTK_ZLIB_LIBRARIES})
 else()
-    target_link_libraries(fltk_images fltk_z)
+  target_link_libraries(fltk_images_STATIC fltk_z_STATIC)
 endif (OPTION_USE_SYSTEM_ZLIB)
 
 if (OPTION_USE_SYSTEM_LIBPNG)
-    target_link_libraries(fltk_images ${FLTK_PNG_LIBRARIES})
+  target_link_libraries(fltk_images_STATIC ${FLTK_PNG_LIBRARIES})
 else()
-    target_link_libraries(fltk_images fltk_png)
+  target_link_libraries(fltk_images_STATIC fltk_png_STATIC)
 endif (OPTION_USE_SYSTEM_LIBPNG)
 
 #######################################################################
 
 if (OPENGL_FOUND)
    FL_ADD_LIBRARY(fltk_gl STATIC "${GLCPPFILES}")
-   target_link_libraries(fltk_gl fltk ${OPENGL_LIBRARIES})
+   target_link_libraries(fltk_gl_STATIC fltk_STATIC ${OPENGL_LIBRARIES})
 endif (OPENGL_FOUND)
 
 #######################################################################
@@ -332,7 +332,7 @@
 
     FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}")
     if (MSVC)
-      target_link_libraries(fltk_forms_SHARED fltk)
+      target_link_libraries(fltk_forms_SHARED fltk_SHARED)
     else ()
       target_link_libraries(fltk_forms_SHARED fltk_SHARED)
     endif (MSVC)
@@ -341,27 +341,27 @@
 
     FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}")
     if (MSVC)
-      target_link_libraries(fltk_images_SHARED fltk)
+      target_link_libraries(fltk_images_SHARED fltk_SHARED)
     else ()
       target_link_libraries(fltk_images_SHARED fltk_SHARED)
     endif (MSVC)
 
     if (OPTION_USE_SYSTEM_LIBJPEG)
-	target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES})
+      target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES})
     else()
-	target_link_libraries(fltk_images_SHARED fltk_jpeg_SHARED)
+      target_link_libraries(fltk_images_SHARED fltk_jpeg_SHARED)
     endif (OPTION_USE_SYSTEM_LIBJPEG)
 
     if (OPTION_USE_SYSTEM_LIBPNG)
-	target_link_libraries(fltk_images_SHARED ${FLTK_PNG_LIBRARIES})
+      target_link_libraries(fltk_images_SHARED ${FLTK_PNG_LIBRARIES})
     else()
-	target_link_libraries(fltk_images_SHARED fltk_png_SHARED)
+      target_link_libraries(fltk_images_SHARED fltk_png_SHARED)
     endif (OPTION_USE_SYSTEM_LIBPNG)
 
     if (OPTION_USE_SYSTEM_ZLIB)
-	target_link_libraries(fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES})
+      target_link_libraries(fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES})
     else()
-	target_link_libraries(fltk_images_SHARED fltk_z_SHARED)
+      target_link_libraries(fltk_images_SHARED fltk_z_SHARED)
     endif (OPTION_USE_SYSTEM_ZLIB)
 
     ###################################################################
@@ -369,9 +369,9 @@
     if (OPENGL_FOUND)
       FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES}")
       if (MSVC)
-	target_link_libraries(fltk_gl_SHARED fltk ${OPENGL_LIBRARIES})
+        target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
       else ()
-	target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
+        target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
       endif (MSVC)
     endif (OPENGL_FOUND)
 
diff -ruN b/test/CMakeLists.txt a/test/CMakeLists.txt
--- b/test/CMakeLists.txt	2019-03-03 09:40:23.000000000 +0100
+++ a/test/CMakeLists.txt	2019-03-10 23:13:36.096519270 +0100
@@ -25,108 +25,108 @@
 endif(APPLE AND NOT OPTION_APPLE_X11)
 
 #######################################################################
-CREATE_EXAMPLE(adjuster adjuster.cxx fltk)
-CREATE_EXAMPLE(arc arc.cxx fltk)
-CREATE_EXAMPLE(animated animated.cxx fltk)
-CREATE_EXAMPLE(ask ask.cxx fltk)
-CREATE_EXAMPLE(bitmap bitmap.cxx fltk)
+CREATE_EXAMPLE(adjuster adjuster.cxx fltk_STATIC)
+CREATE_EXAMPLE(arc arc.cxx fltk_STATIC)
+CREATE_EXAMPLE(animated animated.cxx fltk_STATIC)
+CREATE_EXAMPLE(ask ask.cxx fltk_STATIC)
+CREATE_EXAMPLE(bitmap bitmap.cxx fltk_STATIC)
 
 set(BLOCKS_ICON "${CMAKE_CURRENT_SOURCE_DIR}/blocks.app/Contents/Resources/blocks.icns")
-CREATE_EXAMPLE(blocks "blocks.cxx;${BLOCKS_ICON}" "fltk;${AUDIOLIBS}")
+CREATE_EXAMPLE(blocks "blocks.cxx;${BLOCKS_ICON}" "fltk_STATIC;${AUDIOLIBS}")
 
-CREATE_EXAMPLE(boxtype boxtype.cxx fltk)
-CREATE_EXAMPLE(browser browser.cxx fltk)
-CREATE_EXAMPLE(button button.cxx fltk)
-CREATE_EXAMPLE(buttons buttons.cxx fltk)
+CREATE_EXAMPLE(boxtype boxtype.cxx fltk_STATIC)
+CREATE_EXAMPLE(browser browser.cxx fltk_STATIC)
+CREATE_EXAMPLE(button button.cxx fltk_STATIC)
+CREATE_EXAMPLE(buttons buttons.cxx fltk_STATIC)
 
 set(CHECKERS_ICON "${CMAKE_CURRENT_SOURCE_DIR}/checkers.app/Contents/Resources/checkers.icns")
-CREATE_EXAMPLE(checkers "checkers.cxx;${CHECKERS_ICON}" fltk)
+CREATE_EXAMPLE(checkers "checkers.cxx;${CHECKERS_ICON}" fltk_STATIC)
 
-CREATE_EXAMPLE(clock clock.cxx fltk)
-CREATE_EXAMPLE(colbrowser colbrowser.cxx "fltk;fltk_forms")
-CREATE_EXAMPLE(color_chooser color_chooser.cxx fltk)
-CREATE_EXAMPLE(cursor cursor.cxx fltk)
-CREATE_EXAMPLE(curve curve.cxx fltk)
+CREATE_EXAMPLE(clock clock.cxx fltk_STATIC)
+CREATE_EXAMPLE(colbrowser colbrowser.cxx "fltk_STATIC;fltk_forms_STATIC")
+CREATE_EXAMPLE(color_chooser color_chooser.cxx fltk_STATIC)
+CREATE_EXAMPLE(cursor cursor.cxx fltk_STATIC)
+CREATE_EXAMPLE(curve curve.cxx fltk_STATIC)
 
-CREATE_EXAMPLE(demo "demo.cxx;demo.menu" fltk)
+CREATE_EXAMPLE(demo "demo.cxx;demo.menu" fltk_STATIC)
 set_source_files_properties(demo.menu PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
 
-CREATE_EXAMPLE(device device.cxx fltk)
-CREATE_EXAMPLE(doublebuffer doublebuffer.cxx fltk)
+CREATE_EXAMPLE(device device.cxx fltk_STATIC)
+CREATE_EXAMPLE(doublebuffer doublebuffer.cxx fltk_STATIC)
 
-CREATE_EXAMPLE(editor editor.cxx fltk)
+CREATE_EXAMPLE(editor editor.cxx fltk_STATIC)
 set_target_properties(editor PROPERTIES
     MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/ide/Xcode4/plists/editor-Info.plist"
     )
 
-CREATE_EXAMPLE(fast_slow fast_slow.fl fltk)
-CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk;fltk_images")
-CREATE_EXAMPLE(fonts fonts.cxx fltk)
-CREATE_EXAMPLE(forms forms.cxx "fltk;fltk_forms")
-CREATE_EXAMPLE(hello hello.cxx fltk)
-CREATE_EXAMPLE(help help.cxx "fltk;fltk_images")
-CREATE_EXAMPLE(icon icon.cxx fltk)
-CREATE_EXAMPLE(iconize iconize.cxx fltk)
-CREATE_EXAMPLE(image image.cxx fltk)
-CREATE_EXAMPLE(inactive inactive.fl fltk)
-CREATE_EXAMPLE(input input.cxx fltk)
-CREATE_EXAMPLE(input_choice input_choice.cxx fltk)
-CREATE_EXAMPLE(keyboard "keyboard.cxx;keyboard_ui.fl" fltk)
-CREATE_EXAMPLE(label label.cxx "fltk;fltk_forms")
-CREATE_EXAMPLE(line_style line_style.cxx fltk)
-CREATE_EXAMPLE(list_visuals list_visuals.cxx fltk)
-CREATE_EXAMPLE(mandelbrot "mandelbrot_ui.fl;mandelbrot.cxx" fltk)
-CREATE_EXAMPLE(menubar menubar.cxx fltk)
-CREATE_EXAMPLE(message message.cxx fltk)
-CREATE_EXAMPLE(minimum minimum.cxx fltk)
-CREATE_EXAMPLE(native-filechooser native-filechooser.cxx "fltk;fltk_images")
-CREATE_EXAMPLE(navigation navigation.cxx fltk)
-CREATE_EXAMPLE(output output.cxx "fltk;fltk_forms")
-CREATE_EXAMPLE(overlay overlay.cxx fltk)
-CREATE_EXAMPLE(pack pack.cxx fltk)
-CREATE_EXAMPLE(pixmap pixmap.cxx fltk)
-CREATE_EXAMPLE(pixmap_browser pixmap_browser.cxx "fltk;fltk_images")
-CREATE_EXAMPLE(preferences preferences.fl fltk)
-CREATE_EXAMPLE(offscreen offscreen.cxx fltk)
-CREATE_EXAMPLE(radio radio.fl fltk)
-CREATE_EXAMPLE(resize resize.fl fltk)
-CREATE_EXAMPLE(resizebox resizebox.cxx fltk)
-CREATE_EXAMPLE(rotated_text rotated_text.cxx fltk)
-CREATE_EXAMPLE(scroll scroll.cxx fltk)
-CREATE_EXAMPLE(subwindow subwindow.cxx fltk)
+CREATE_EXAMPLE(fast_slow fast_slow.fl fltk_STATIC)
+CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk_STATIC;fltk_images_STATIC")
+CREATE_EXAMPLE(fonts fonts.cxx fltk_STATIC)
+CREATE_EXAMPLE(forms forms.cxx "fltk_STATIC;fltk_forms_STATIC")
+CREATE_EXAMPLE(hello hello.cxx fltk_STATIC)
+CREATE_EXAMPLE(help help.cxx "fltk_STATIC;fltk_images_STATIC")
+CREATE_EXAMPLE(icon icon.cxx fltk_STATIC)
+CREATE_EXAMPLE(iconize iconize.cxx fltk_STATIC)
+CREATE_EXAMPLE(image image.cxx fltk_STATIC)
+CREATE_EXAMPLE(inactive inactive.fl fltk_STATIC)
+CREATE_EXAMPLE(input input.cxx fltk_STATIC)
+CREATE_EXAMPLE(input_choice input_choice.cxx fltk_STATIC)
+CREATE_EXAMPLE(keyboard "keyboard.cxx;keyboard_ui.fl" fltk_STATIC)
+CREATE_EXAMPLE(label label.cxx "fltk_STATIC;fltk_forms_STATIC")
+CREATE_EXAMPLE(line_style line_style.cxx fltk_STATIC)
+CREATE_EXAMPLE(list_visuals list_visuals.cxx fltk_STATIC)
+CREATE_EXAMPLE(mandelbrot "mandelbrot_ui.fl;mandelbrot.cxx" fltk_STATIC)
+CREATE_EXAMPLE(menubar menubar.cxx fltk_STATIC)
+CREATE_EXAMPLE(message message.cxx fltk_STATIC)
+CREATE_EXAMPLE(minimum minimum.cxx fltk_STATIC)
+CREATE_EXAMPLE(native-filechooser native-filechooser.cxx "fltk_STATIC;fltk_images_STATIC")
+CREATE_EXAMPLE(navigation navigation.cxx fltk_STATIC)
+CREATE_EXAMPLE(output output.cxx "fltk_STATIC;fltk_forms_STATIC")
+CREATE_EXAMPLE(overlay overlay.cxx fltk_STATIC)
+CREATE_EXAMPLE(pack pack.cxx fltk_STATIC)
+CREATE_EXAMPLE(pixmap pixmap.cxx fltk_STATIC)
+CREATE_EXAMPLE(pixmap_browser pixmap_browser.cxx "fltk_STATIC;fltk_images_STATIC")
+CREATE_EXAMPLE(preferences preferences.fl fltk_STATIC)
+CREATE_EXAMPLE(offscreen offscreen.cxx fltk_STATIC)
+CREATE_EXAMPLE(radio radio.fl fltk_STATIC)
+CREATE_EXAMPLE(resize resize.fl fltk_STATIC)
+CREATE_EXAMPLE(resizebox resizebox.cxx fltk_STATIC)
+CREATE_EXAMPLE(rotated_text rotated_text.cxx fltk_STATIC)
+CREATE_EXAMPLE(scroll scroll.cxx fltk_STATIC)
+CREATE_EXAMPLE(subwindow subwindow.cxx fltk_STATIC)
 
 set(SUDOKU_ICON "${CMAKE_CURRENT_SOURCE_DIR}/sudoku.app/Contents/Resources/sudoku.icns")
-CREATE_EXAMPLE(sudoku "sudoku.cxx;${SUDOKU_ICON}" "fltk;fltk_images;${AUDIOLIBS}")
+CREATE_EXAMPLE(sudoku "sudoku.cxx;${SUDOKU_ICON}" "fltk_STATIC;fltk_images_STATIC;${AUDIOLIBS}")
 
-CREATE_EXAMPLE(symbols symbols.cxx fltk)
-CREATE_EXAMPLE(tabs tabs.fl fltk)
-CREATE_EXAMPLE(table table.cxx fltk)
-CREATE_EXAMPLE(threads threads.cxx fltk)
-CREATE_EXAMPLE(tile tile.cxx fltk)
-CREATE_EXAMPLE(tiled_image tiled_image.cxx fltk)
-CREATE_EXAMPLE(tree tree.fl fltk)
-CREATE_EXAMPLE(twowin twowin.cxx fltk)
-CREATE_EXAMPLE(utf8 utf8.cxx fltk)
-CREATE_EXAMPLE(valuators valuators.fl fltk)
-CREATE_EXAMPLE(unittests unittests.cxx fltk)
-CREATE_EXAMPLE(windowfocus windowfocus.cxx fltk)
+CREATE_EXAMPLE(symbols symbols.cxx fltk_STATIC)
+CREATE_EXAMPLE(tabs tabs.fl fltk_STATIC)
+CREATE_EXAMPLE(table table.cxx fltk_STATIC)
+CREATE_EXAMPLE(threads threads.cxx fltk_STATIC)
+CREATE_EXAMPLE(tile tile.cxx fltk_STATIC)
+CREATE_EXAMPLE(tiled_image tiled_image.cxx fltk_STATIC)
+CREATE_EXAMPLE(tree tree.fl fltk_STATIC)
+CREATE_EXAMPLE(twowin twowin.cxx fltk_STATIC)
+CREATE_EXAMPLE(utf8 utf8.cxx fltk_STATIC)
+CREATE_EXAMPLE(valuators valuators.fl fltk_STATIC)
+CREATE_EXAMPLE(unittests unittests.cxx fltk_STATIC)
+CREATE_EXAMPLE(windowfocus windowfocus.cxx fltk_STATIC)
 
-CREATE_EXAMPLE(fltk-versions ../examples/fltk-versions.cxx fltk)
+CREATE_EXAMPLE(fltk-versions ../examples/fltk-versions.cxx fltk_STATIC)
 
 # OpenGL demos...
 if(OPENGL_FOUND)
-CREATE_EXAMPLE(CubeView "CubeMain.cxx;CubeView.cxx;CubeViewUI.fl" "fltk;fltk_gl")
-CREATE_EXAMPLE(cube cube.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(fractals "fractals.cxx;fracviewer.cxx" "fltk;fltk_gl")
-CREATE_EXAMPLE(fullscreen fullscreen.cxx "fltk;fltk_gl")
-CREATE_EXAMPLE(glpuzzle glpuzzle.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(gl_overlay gl_overlay.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(shape shape.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
+CREATE_EXAMPLE(CubeView "CubeMain.cxx;CubeView.cxx;CubeViewUI.fl" "fltk_STATIC;fltk_gl_STATIC")
+CREATE_EXAMPLE(cube cube.cxx "fltk_STATIC;fltk_gl_STATIC;${OPENGL_LIBRARIES}")
+CREATE_EXAMPLE(fractals "fractals.cxx;fracviewer.cxx" "fltk_STATIC;fltk_gl_STATIC")
+CREATE_EXAMPLE(fullscreen fullscreen.cxx "fltk_STATIC;fltk_gl_STATIC")
+CREATE_EXAMPLE(glpuzzle glpuzzle.cxx "fltk_STATIC;fltk_gl_STATIC;${OPENGL_LIBRARIES}")
+CREATE_EXAMPLE(gl_overlay gl_overlay.cxx "fltk_STATIC;fltk_gl_STATIC;${OPENGL_LIBRARIES}")
+CREATE_EXAMPLE(shape shape.cxx "fltk_STATIC;fltk_gl_STATIC;${OPENGL_LIBRARIES}")
 endif(OPENGL_FOUND)
 
 # Cairo demo
 if(FLTK_HAVE_CAIRO)
-   CREATE_EXAMPLE(cairo_test cairo_test.cxx "fltk;fltk_cairo")
+   CREATE_EXAMPLE(cairo_test cairo_test.cxx "fltk_STATIC;fltk_cairo_STATIC")
 endif(FLTK_HAVE_CAIRO)
 
 # We need some support files for the demo programs:
