fd5cd80935
This is a big commit and there are too many changes to list them all. The main changes are: - rename all CMake build options to 'FLTK_*' - export library targets with namespace (prefix) 'fltk::' - standardize shared library target names with suffix '-shared' - set public build properties on libraries for consumers - document library names and aliases in README.CMake.txt - document changes in "Migrating Code from FLTK 1.3 to 1.4" - partial backwards compatibility for old user projects Included but not directly related changes: - fix Windows (Visual Studio) DLL build - add CMake function fl_debug_target() to show target properties - don't build test programs if FLTK is a subproject - internal: reformat CMake code: remove space before '(' Thanks to Matthias and Manolo for their help, testing, and feeback.
86 lines
2.9 KiB
CMake
86 lines
2.9 KiB
CMake
#
|
|
# FLTK-Functions.cmake
|
|
# Originally written by Michael Surette
|
|
#
|
|
# Copyright 1998-2024 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
|
|
#
|
|
|
|
################################################################################
|
|
# functions used by the build system and exported for the end-user
|
|
################################################################################
|
|
|
|
################################################################################
|
|
#
|
|
# fltk_run_fluid: Run fluid to compile fluid (.fl) files
|
|
#
|
|
# Usage: fltk_run_fluid(SOURCES "FLUID_SOURCE [.. FLUID_SOURCE]")
|
|
#
|
|
# Input: The CMake variable "FL_FILES" must contain a list of input
|
|
# file names. Only names ending in ".fl" are considered and
|
|
# compiled to their ".cxx" and ".h" files which are stored
|
|
# in the current build directory.
|
|
#
|
|
# Output: "SOURCES" is used as a CMake variable name that is assigned the
|
|
# names of the compiled ".cxx" files as a ";" separated list in the
|
|
# parent scope (the caller's scope).
|
|
#
|
|
################################################################################
|
|
|
|
function(fltk_run_fluid SOURCES FL_FILES)
|
|
|
|
if(NOT FLTK_FLUID_EXECUTABLE)
|
|
message(WARNING "Not building ${FL_FILES}. FLUID executable not found.")
|
|
return()
|
|
endif()
|
|
|
|
set(CXX_FILES)
|
|
foreach(src ${FL_FILES})
|
|
if("${src}" MATCHES "\\.fl$")
|
|
string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
|
|
add_custom_command(
|
|
OUTPUT "${basename}.cxx" "${basename}.h"
|
|
COMMAND ${FLTK_FLUID_EXECUTABLE} -c ${CMAKE_CURRENT_SOURCE_DIR}/${src}
|
|
DEPENDS ${src}
|
|
MAIN_DEPENDENCY ${src}
|
|
)
|
|
list(APPEND CXX_FILES "${basename}.cxx")
|
|
endif()
|
|
endforeach()
|
|
set(${SOURCES} ${CXX_FILES} PARENT_SCOPE)
|
|
|
|
endfunction(fltk_run_fluid SOURCES FL_FILES)
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# fltk_set_bundle_icon: Set the bundle icon for macOS bundles
|
|
#
|
|
# This function sets macOS specific target properties. These properties are
|
|
# ignored on other platforms.
|
|
#
|
|
# Usage: fltk_set_bundle_icon(TARGET ICON_PATH)
|
|
#
|
|
# TARGET must be a valid CMake target that has been created before this
|
|
# function is called. It must not be an alias name.
|
|
#
|
|
################################################################################
|
|
|
|
function(fltk_set_bundle_icon TARGET ICON_PATH)
|
|
get_filename_component(ICON_NAME "${ICON_PATH}" NAME)
|
|
set_target_properties(${TARGET}
|
|
PROPERTIES
|
|
MACOSX_BUNDLE_ICON_FILE "${ICON_NAME}"
|
|
RESOURCE "${ICON_PATH}"
|
|
)
|
|
endfunction(fltk_set_bundle_icon TARGET ICON_PATH)
|