# # CMakeLists.txt to build fltk-options for the FLTK project using CMake (www.cmake.org) # # Copyright 2023 by Bill Spitzak and others. # # This library is free software. Distribution and use rights are outlined in # the file "COPYING" which should have been included with this file. If this # file is missing or damaged, see the license at: # # https://www.fltk.org/COPYING.php # # Please see the following page on how to report bugs and issues: # # https://www.fltk.org/bugs.php # set (CPPFILES fltk-options.cxx ) set (HEADERFILES ) set (FLTK_OPTIONS_TARGETS fltk-options) # fltk-options and optional fltk-options-cmd target set (FLTK_OPTIONS_LIBS fltk) # libraries used to link fltk-options executables if (APPLE AND (NOT OPTION_APPLE_X11)) # macOS set (ICON_NAME fltk-options.icns) set (ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_NAME}") add_executable (fltk-options MACOSX_BUNDLE ${CPPFILES} ${HEADERFILES} ${ICON_PATH}) # create macOS bundle wrapper script set (WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/fltk-options") add_custom_command ( TARGET fltk-options POST_BUILD COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/../CMake/macOS-bundle-wrapper.in ${WRAPPER} COMMAND chmod u+x,g+x,o+x ${WRAPPER} BYPRODUCTS ${WRAPPER} VERBATIM ) unset (WRAPPER) else () # option WIN32 builds a Windows GUI program, ignored on other platforms add_executable (fltk-options WIN32 ${CPPFILES} ${HEADERFILES}) endif () # we must link fltk-optons with cairo if option CAIRO is enabled if (FLTK_HAVE_CAIRO) fl_target_link_directories (fltk-options PRIVATE "${PKG_CAIRO_LIBRARY_DIRS}") endif (FLTK_HAVE_CAIRO) if (USE_GDIPLUS) # can only be true on Windows list (APPEND FLTK_OPTIONS_LIBS gdiplus) endif (USE_GDIPLUS) target_link_libraries (fltk-options ${FLTK_OPTIONS_LIBS}) # Add fltk-options-cmd console app (Windows only) for editing FLTK options. # This is done for all Windows targets, even if cross-compiling. if (WIN32) list (APPEND FLTK_OPTIONS_TARGETS fltk-options-cmd) add_executable (fltk-options-cmd ${CPPFILES} ${HEADERFILES}) target_link_libraries (fltk-options-cmd ${FLTK_OPTIONS_LIBS}) if (FLTK_HAVE_CAIRO) fl_target_link_directories (fltk-options-cmd PRIVATE "${PKG_CAIRO_LIBRARY_DIRS}") endif (FLTK_HAVE_CAIRO) endif () # install fltk-options GUI and commandline tool if (APPLE AND (NOT OPTION_APPLE_X11)) # On macOS, fltk-options must be installed twice. The bundled version of # fltk-options needs to go into the /Applications folder to make it visible # as a user App with full GUI. # The binary without bundle should go into ${FLTK_BINDIR}, usually # /usr/local/bin, so it will be picked up as a command line tool by # the build process of other apps. # On macOS the command line tool is the same target ('fltk-options') as the # one included in the bundle. # create bundle set_target_properties (fltk-options PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/fltk-options.plist") set_target_properties (fltk-options PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME}) set_target_properties (fltk-options PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.fltk.fltk-options") # The line below would wrongly install /Applications/fltk-options.icns # ## set_target_properties (fltk-options PROPERTIES RESOURCE ${ICON_PATH}) # install fltk-options GUI and commandline tools #install (TARGETS fltk-options DESTINATION "/Applications") # install command line tool install (PROGRAMS $ DESTINATION ${FLTK_BINDIR}) else() # install fltk-options GUI and optional commandline tool 'fltk-options-cmd' # (only on Windows) install (TARGETS ${FLTK_OPTIONS_TARGETS} EXPORT FLTK-Targets RUNTIME DESTINATION ${FLTK_BINDIR} LIBRARY DESTINATION ${FLTK_LIBDIR} ARCHIVE DESTINATION ${FLTK_LIBDIR} ) endif (APPLE AND (NOT OPTION_APPLE_X11)) # install desktop files if (UNIX) install (FILES fltk-options.desktop DESTINATION ${FLTK_DATADIR}/applications ) # Install mime-type file (x-fltk-options.desktop method is deprecated) install (FILES fltk-options.xml DESTINATION ${FLTK_DATADIR}/mime/packages ) # Install desktop icons foreach (icon 32 48 64 128) install (FILES icons/fltk-options-${icon}.png DESTINATION ${FLTK_DATADIR}/icons/hicolor/${icon}x${icon}/apps RENAME fltk-options.png ) endforeach() endif (UNIX)