CMake enhancements, as discussed in STR #3055.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10342 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Albrecht Schlosser 2014-09-27 00:41:06 +00:00
parent 8ef6520fe3
commit 318c3619dc
16 changed files with 285 additions and 528 deletions

View File

@ -1,49 +1,16 @@
#
# FLTKConfig.cmake - FLTK CMake configuration file for external projects.
#
# This file is configured by FLTK and used by the UseFLTK.cmake module
# to load FLTK's settings for an external project.
# This file is generated by CMake and used to load FLTK's settings for an external project.
# It defines the following variables
# FLTK_INCLUDE_DIRS - FLTK include directories
# FLTK_LIBRARIES - list of FLTK libraries built
# FLTK_FLUID_EXECUTABLE needed by fltk_wrap_ui()
# FLTK_USE_FILE - sets things up to use FLTK
set(FLTK_FOUND TRUE)
set(FLTK_VERSION @FLTK_VERSION_FULL@)
set(FLTK_FLUID_EXECUTABLE "@FLTK_FLUID_PATH@")
include(${CMAKE_CURRENT_LIST_DIR}/FLTK-Targets.cmake)
if("@EXE_LINKER_FLAGS@" MATCHES "[-_A-Za-z0-9]+"))
set(FLTK_EXE_LINKER_FLAGS "@EXE_LINKER_FLAGS@")
endif("@EXE_LINKER_FLAGS@" MATCHES "[-_A-Za-z0-9]+")
set(FLTK_USE_FILE "@PREFIX_CONFIG@/UseFLTK.cmake")
set(FLTK_DIR "@PREFIX_CONFIG@")
set(FLTK_BIN_DIR "@PREFIX_BIN@")
set(FLTK_LIB_DIR "@PREFIX_LIB@")
set(FLTK_INCLUDE_DIR "@PREFIX_INCLUDE@")
set(FLTK_DATA_DIR "@PREFIX_DATA@")
set(FLTK_DOC_DIR "@PREFIX_DOC@")
set(FLTK_SHARED_LIBS_FOUND @OPTION_BUILD_SHARED_LIBS@)
set(FLTK_CAIRO_FOUND @FLTK_CAIRO_FOUND@)
set(FLTK_GL_FOUND @FLTK_GL_FOUND@)
set(FLTK_THREADS_FOUND @FLTK_THREADS_FOUND@)
set(FLTK_PTHREADS_FOUND @FLTK_PTHREADS_FOUND@)
set(FLTK_BUILTIN_JPEG_FOUND @FLTK_BUILTIN_JPEG_FOUND@)
set(FLTK_BUILTIN_ZLIB_FOUND @FLTK_BUILTIN_ZLIB_FOUND@)
set(FLTK_BUILTIN_PNG_FOUND @FLTK_BUILTIN_PNG_FOUND@)
set(FLTK_XINERAMA_FOUND @FLTK_XINERAMA_FOUND@)
set(FLTK_XFT_FOUND @FLTK_XFT_FOUND@)
set(FLTK_XDBE_FOUND @FLTK_XDBE_FOUND@)
set(FLTK_CAIRO_FOUND @FLTK_CAIRO_FOUND@)
set(FLTK_GL_FOUND @FLTK_GL_FOUND@)
set(FLTK_THREADS_FOUND @FLTK_THREADS_FOUND@)
set(FLTK_PTHREADS_FOUND @FLTK_PTHREADS_FOUND@)
set(FLTK_BUILTIN_JPEG_FOUND @FLTK_BUILTIN_JPEG_FOUND@)
set(FLTK_BUILTIN_ZLIB_FOUND @FLTK_BUILTIN_ZLIB_FOUND@)
set(FLTK_BUILTIN_PNG_FOUND @FLTK_BUILTIN_PNG_FOUND@)
set(FLTK_XINERAMA_FOUND @FLTK_XINERAMA_FOUND@)
set(FLTK_XFT_FOUND @FLTK_XFT_FOUND@)
set(FLTK_XDBE_FOUND @FLTK_XDBE_FOUND@)
include("@PREFIX_CONFIG@/FLTKLibraries.cmake")
set(FLTK_INCLUDE_DIRS "@INCLUDE_DIRS@")
set(FLTK_USE_FILE ${CMAKE_CURRENT_LIST_DIR}/UseFLTK.cmake)

View File

@ -1,8 +1,25 @@
#
# UseFLTK.CMake - FLTK CMake environment configuration file for external projects.
#
# This file is generated by CMake and used to set FLTK's environment for an external project.
#
# automatically generated - do not edit
include_directories("@PREFIX_INCLUDE@")
include_directories("@INCLUDE_DIRS@")
if(FLTK_EXE_LINKER_FLAGS)
list(APPEND CMAKE_EXE_LINKER_FLAGS "${FLTK_EXE_LINKER_FLAGS}")
endif(FLTK_EXE_LINKER_FLAGS)
if(CMAKE_CROSSCOMPILING)
find_file(FLUID_PATH
NAMES fluid fluid.exe
PATHS ENV PATH
NO_CMAKE_FIND_ROOT_PATH
)
add_executable(fluid IMPORTED)
set_target_properties(fluid
PROPERTIES IMPORTED_LOCATION ${FLUID_PATH}
)
set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
else()
set(FLTK_FLUID_EXECUTABLE fluid)
endif(CMAKE_CROSSCOMPILING)
set(FLTK_WRAP_UI TRUE)

View File

@ -29,30 +29,35 @@ if(CMAKE_CROSSCOMPILING)
)
add_executable(fluid IMPORTED)
set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
set(FLTK_FLUID_PATH ${FLUID_PATH})
set(FLUID) # no export
set_target_properties(fluid
PROPERTIES IMPORTED_LOCATION ${FLUID_PATH}
)
else()
add_subdirectory(fluid)
set(FLTK_FLUID_EXECUTABLE fluid)
set(FLTK_FLUID_PATH ${PREFIX_BIN}/fluid)
set(FLUID fluid) # export
endif(CMAKE_CROSSCOMPILING)
add_subdirectory(src)
# generate FLTKConfig.cmake
string(REPLACE ";" " " EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
# generate FLTK-Targets.cmake for build directory use
export(TARGETS ${FLUID} ${FLTK_LIBRARIES} FILE ${CMAKE_BINARY_DIR}/FLTK-Targets.cmake)
# generate FLTKConfig.cmake for build directory use
set(INCLUDE_DIRS "@FLTK_INCLUDE_DIRS@")
set(CONFIG_PATH @FLTK_BINARY_DIR@)
configure_file(
${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake
${FLTK_BINARY_DIR}/FLTKConfig.cmake
@ONLY
)
# generate UseFLTK.cmake
# generate UseFLTK.cmake for build directory use
configure_file(
${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in
${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake
${FLTK_BINARY_DIR}/UseFLTK.cmake
@ONLY
)
@ -92,4 +97,3 @@ if(OPTION_CREATE_LINKS)
@ONLY
)
endif(OPTION_CREATE_LINKS)
#

View File

@ -32,7 +32,7 @@ add_custom_target(uninstall
)
install(DIRECTORY ${FLTK_SOURCE_DIR}/FL
DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS
DESTINATION include USE_SOURCE_PERMISSIONS
PATTERN ".svn" EXCLUDE
)
@ -40,29 +40,41 @@ if(OPTION_CREATE_LINKS)
install(SCRIPT ${FLTK_BINARY_DIR}/install-symlinks.cmake)
endif(OPTION_CREATE_LINKS)
install(PROGRAMS ${FLTK_BINARY_DIR}/fltk-config
DESTINATION ${PREFIX_BIN}
OPTIONAL
# generate FLTKConfig.cmake for installed directory use
set(INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
set(CONFIG_PATH ${CMAKE_INSTALL_PREFIX}/@FLTK_CONFIG_PATH@)
install(EXPORT FLTK-Targets
DESTINATION ${FLTK_CONFIG_PATH}
FILE FLTK-Targets.cmake
)
install(EXPORT fltk-install
DESTINATION ${PREFIX_CONFIG}
FILE FLTKLibraries.cmake
configure_file(
${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
${FLTK_BINARY_DIR}/etc/FLTKConfig.cmake
@ONLY
)
install(FILES ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake
DESTINATION ${PREFIX_CONFIG}
install(FILES ${FLTK_BINARY_DIR}/etc/FLTKConfig.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
install(FILES ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake
DESTINATION ${PREFIX_CONFIG}
configure_file(
${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in
${FLTK_BINARY_DIR}/etc/UseFLTK.cmake
@ONLY
)
if(CMAKE_HOST_UNIX)
install(FILES ${FLTK_BINARY_DIR}/etc/UseFLTK.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
if(UNIX)
macro(INSTALL_MAN FILE LEVEL)
install(FILES
${FLTK_SOURCE_DIR}/documentation/src/${FILE}.man
DESTINATION ${PREFIX_MAN}/man${LEVEL}
DESTINATION man/man${LEVEL}
RENAME ${FILE}.${LEVEL}
)
endmacro(INSTALL_MAN FILE LEVEL)
@ -74,4 +86,4 @@ if(CMAKE_HOST_UNIX)
INSTALL_MAN(checkers 6)
INSTALL_MAN(sudoku 6)
endif(CMAKE_HOST_UNIX)
endif(UNIX)

View File

@ -34,114 +34,24 @@ set(OPTION_ARCHFLAGS ""
add_definitions(${OPTION_ARCHFLAGS})
#######################################################################
set(OPTION_PREFIX_BIN ""
CACHE STRING
"where to install executables - leave empty to use {CMAKE_INSTALL_PREFIX}/bin"
)
if(OPTION_PREFIX_BIN)
set(PREFIX_BIN ${OPTION_PREFIX_BIN} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_BIN ${CMAKE_INSTALL_PREFIX}/bin CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_BIN)
#######################################################################
set(OPTION_PREFIX_LIB ""
CACHE STRING
"where to install libraries - leave empty to use {CMAKE_INSTALL_PREFIX}/lib"
)
if(OPTION_PREFIX_LIB)
set(PREFIX_LIB ${OPTION_PREFIX_LIB} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_LIB ${CMAKE_INSTALL_PREFIX}/lib CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_LIB)
#######################################################################
set(OPTION_PREFIX_INCLUDE ""
CACHE STRING
"where to install include files - leave empty to use {CMAKE_INSTALL_PREFIX}/include"
)
if(OPTION_PREFIX_INCLUDE)
set(PREFIX_INCLUDE ${OPTION_PREFIX_INCLUDE} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_INCLUDE ${CMAKE_INSTALL_PREFIX}/include CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_INCLUDE)
#######################################################################
set(OPTION_PREFIX_DATA ""
CACHE STRING
"where to install data files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/FLTK"
)
if(OPTION_PREFIX_DATA)
set(PREFIX_DATA ${OPTION_PREFIX_DATA} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_DATA ${CMAKE_INSTALL_PREFIX}/share/FLTK CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_DATA)
#######################################################################
set(OPTION_PREFIX_DOC ""
CACHE STRING
"where to install doc files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/doc/FLTK"
)
if(OPTION_PREFIX_DOC)
set(PREFIX_DOC ${OPTION_PREFIX_DOC} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_DOC ${CMAKE_INSTALL_PREFIX}/share/doc/FLTK CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_DOC)
#######################################################################
if(WIN32)
set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/CMake")
elseif(APPLE)
set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/FLTK/.framework/Resources/CMake")
else()
set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}")
endif(WIN32)
set(OPTION_PREFIX_CONFIG ""
CACHE STRING
"where to install CMake config files - leave empty to use ${DEFAULT_CONFIG}"
)
if(OPTION_PREFIX_CONFIG)
set(PREFIX_CONFIG "${OPTION_PREFIX_CONFIG}" CACHE INTERNAL "" FORCE)
else()
set(PREFIX_CONFIG "${DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_CONFIG)
#######################################################################
if(CMAKE_HOST_UNIX)
set(OPTION_PREFIX_MAN ""
CACHE STRING
"where to install man files - leave empty to use {CMAKE_INSTALL_PREFIX}/man"
)
if(OPTION_PREFIX_MAN)
set(PREFIX_MAN ${OPTION_PREFIX_MAN} CACHE INTERNAL "" FORCE)
else()
set(PREFIX_MAN ${CMAKE_INSTALL_PREFIX}/man CACHE INTERNAL "" FORCE)
endif(OPTION_PREFIX_MAN)
if(UNIX)
option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
endif(CMAKE_HOST_UNIX)
endif(UNIX)
#######################################################################
if(APPLE)
option(OPTION_APPLE_X11 "use X11" OFF)
endif(APPLE)
if(NOT APPLE OR OPTION_APPLE_X11)
if((NOT APPLE OR OPTION_APPLE_X11) AND NOT WIN32)
include(FindX11)
if(X11_FOUND)
set(USE_X11 1)
list(APPEND FLTK_CFLAGS -DUSE_X11)
list(APPEND FLTK_LDLIBS -lX11)
endif(X11_FOUND)
endif(NOT APPLE OR OPTION_APPLE_X11)
endif((NOT APPLE OR OPTION_APPLE_X11) AND NOT WIN32)
#######################################################################
option(OPTION_USE_POLL "use poll if available" OFF)
@ -151,7 +61,10 @@ if(OPTION_USE_POLL)
endif(OPTION_USE_POLL)
#######################################################################
option(OPTION_BUILD_SHARED_LIBS "Build shared libraries" OFF)
option(OPTION_BUILD_SHARED_LIBS
"Build shared libraries(in addition to static libraries)"
OFF
)
#######################################################################
option(OPTION_BUILD_EXAMPLES "build example programs" ON)
@ -240,30 +153,6 @@ if(OPTION_LARGE_FILE)
endif(NOT MSVC)
endif(OPTION_LARGE_FILE)
#######################################################################
option(OPTION_USE_SYSTEM_LIBJPEG "Use's system libjpeg" ON)
if(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
include(FindJPEG)
endif(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
include_directories(${JPEG_INCLUDE_DIR})
set(FLTK_BUILTIN_JPEG_FOUND FALSE)
else()
add_subdirectory(jpeg)
set(FLTK_JPEG_LIBRARIES fltk_jpeg)
include_directories(${FLTK_SOURCE_DIR}/jpeg)
set(FLTK_BUILTIN_JPEG_FOUND TRUE)
endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
if(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
message(STATUS "\ncannot find system jpeg library - using built-in\n")
endif(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
set(HAVE_LIBJPEG 1)
#######################################################################
option(OPTION_USE_SYSTEM_ZLIB "Use's system zlib" ON)
@ -289,6 +178,30 @@ endif(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND)
set(HAVE_LIBZ 1)
#######################################################################
option(OPTION_USE_SYSTEM_LIBJPEG "Use's system libjpeg" ON)
if(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
include(FindJPEG)
endif(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
include_directories(${JPEG_INCLUDE_DIR})
set(FLTK_BUILTIN_JPEG_FOUND FALSE)
else()
add_subdirectory(jpeg)
set(FLTK_JPEG_LIBRARIES fltk_jpeg)
include_directories(${FLTK_SOURCE_DIR}/jpeg)
set(FLTK_BUILTIN_JPEG_FOUND TRUE)
endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
if(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
message(STATUS "\ncannot find system jpeg library - using built-in\n")
endif(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
set(HAVE_LIBJPEG 1)
#######################################################################
option(OPTION_USE_SYSTEM_LIBPNG "Use's system libpng" ON)

View File

@ -24,7 +24,7 @@
find_file(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h)
find_file(HAVE_DIRENT_H dirent.h)
find_file(HAVE_DLFCN_H dlfcn.h)
find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2)
find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2 freetype2/freetype)
find_file(HAVE_GL_GL_H GL/gl.h)
find_file(HAVE_GL_GLU_H GL/glu.h)
find_file(HAVE_LIBPNG_PNG_H libpng/png.h)
@ -51,6 +51,7 @@ mark_as_advanced(HAVE_SYS_STDTYPES_H HAVE_XDBE_H)
# where to find freetype headers
find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2)
find_path(FREETYPE_PATH freetype/freetype.h PATH_SUFFIXES freetype2)
if(FREETYPE_PATH)
include_directories(${FREETYPE_PATH})
endif(FREETYPE_PATH)

View File

@ -34,18 +34,39 @@ set(ARCHIVE_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib)
# Search for modules in the FLTK source dir first
set(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake")
include_directories(${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR})
set(FLTK_INCLUDE_DIRS ${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR})
include_directories(${FLTK_INCLUDE_DIRS})
#######################################################################
# platform dependent information
#######################################################################
# fix no WIN32 defined issue
if(NOT WIN32)
if(_WIN32)
set(WIN32 _WIN32)
elseif(__WIN32__)
set(WIN32 __WIN32__)
endif(_WIN32)
endif(NOT WIN32)
# set where config and example files go
if(WIN32 AND NOT CYGWIN)
set(FLTK_CONFIG_PATH CMake)
set(FLTK_EXAMPLES_PATH bin/fltk-examples)
elseif(APPLE)
set(FLTK_CONFIG_PATH FLTK/.framework/Resources/CMake)
set(FLTK_EXAMPLES_PATH share/fltk-examples)
else()
set(FLTK_CONFIG_PATH lib/fltk)
set(FLTK_EXAMPLES_PATH share/fltk-examples)
endif(WIN32 AND NOT CYGWIN)
include(TestBigEndian)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
if(APPLE)
set(__APPLE_QUARTZ__ 1)
set(HAVE_STRTOLL 1)
set(HAVE_STRCASECMP 1)
set(HAVE_DIRENT_H 1)
set(HAVE_SNPRINTF 1)
@ -57,16 +78,19 @@ if(APPLE)
endif(APPLE)
if(WIN32)
if(MSVC)
add_definitions(-DWIN32_LEAN_AND_MEAN)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif(MSVC)
if(CMAKE_C_COMPILER_ID STREQUAL GNU)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows")
endif(CMAKE_C_COMPILER_ID STREQUAL GNU)
if(MINGW AND EXISTS /mingw)
list(APPEND CMAKE_PREFIX_PATH /mingw)
endif(MINGW AND EXISTS /mingw)
if(MSVC)
add_definitions(-DWIN32_LEAN_AND_MEAN)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
######## from ide/VisualC2010/config.h
set(BORDER_WIDTH 2)
########
endif(MSVC)
if(CMAKE_C_COMPILER_ID STREQUAL GNU)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows")
endif(CMAKE_C_COMPILER_ID STREQUAL GNU)
if(MINGW AND EXISTS /mingw)
list(APPEND CMAKE_PREFIX_PATH /mingw)
endif(MINGW AND EXISTS /mingw)
endif(WIN32)
#######################################################################

View File

@ -18,7 +18,12 @@
#
project(FLTK)
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 2.6)
#######################################################################
# define some macros
#######################################################################
include(CMake/macros.cmake)
#######################################################################
# basic setup

View File

@ -1,4 +1,4 @@
README.CMake.txt - 2010-12-20 - Building and using FLTK with CMake
README.CMake.txt - 2014-09-27 - Building and using FLTK with CMake
------------------------------------------------------------------
@ -98,16 +98,6 @@ OPTION_OPTIM
OPTION_ARCHFLAGS
Extra architecture flags.
OPTION_PREFIX_BIN
OPTION_PREFIX_LIB
OPTION_PREFIX_INCLUDE
OPTION_PREFIX_DATA
OPTION_PREFIX_DOC
OPTION_PREFIX_CONFIG
OPTION_PREFIX_MAN
The OPTION_PREFIX_* flags are for fine-tuning where everything goes
on the install.
OPTION_APPLE_X11 - default OFF
In case you want to use X11 on OSX. Not currently supported.
@ -218,6 +208,11 @@ install it in the /usr/i486-mingw32/usr tree.
USING CMAKE WITH FLTK
=======================
The CMake Export/Import facility can be thought of as an automated
fltk-config. For example, if you link your program to the fltk
library, it will automatically link in all of its dependencies. This
includes any special flags. ie on Linux it includes the -lpthread flag.
This howto assumes that you have FLTK libraries which were built using
CMake, installed. Building them with CMake generates some CMake helper
files which are installed in standard locations, making FLTK easy to find
@ -231,6 +226,12 @@ cmake_minimum_required(VERSION 2.6)
project(hello)
# the following line is required only if you don't install FLTK
# or if find_package can't find your installation directory
# it points to the build directory or the base folder,
# not the library folder.
set(FLTK_DIR /path/to/fltk)
find_package(FLTK REQUIRED NO_MODULE)
include(${FLTK_USE_FILE})
@ -240,21 +241,20 @@ target_link_libraries(hello fltk)
------
The set(FLTK_DIR ...) command is a superhint to the find_package command.
This is very useful if you don't install or have a non-standard install.
The find_package command tells CMake to find the package FLTK, REQUIRED
means that it is an error if it's not found. NO_MODULE tells it to search
only for the FLTKConfig file, not using the FindFLTK.cmake supplied with
CMake, which doesn't work with this version of FLTK.
Once the package is found we include the ${FLTK_USE_FILE} which adds the
FLTK include directories and library link information to its knowledge
base. After that your programs will be able to find FLTK headers and
when you link the fltk library, it automatically links the libraries
fltk depends on.
FLTK include directories to its knowledge base. After that your programs
will be able to find FLTK headers.
The WIN32 in the add_executable tells your Windows compiler that this is
a gui app. It is ignored on other platforms.
LIBRARY NAMES
---------------
@ -301,3 +301,4 @@ when find_package(FLTK REQUIRED NO_MODULE) succeeds.
Dec 20 2010 - matt: merged and restructures
May 15 2013 - erco: small formatting tweaks, added some examples
Feb 23 2014 - msurette: updated to reflect changes to the CMake files

View File

@ -1,27 +1,17 @@
project(FLTKcairo)
include_directories(${FLTKcairo_SOURCE_DIR})
include_directories(${FLTKcairo_BINARY_DIR})
include_directories(${PKG_CAIRO_INCLUDE_DIRS})
# source files for cairo
set(cairo_SRCS Fl_Cairo.cxx)
#######################################################################
add_library(fltk_cairo ${cairo_SRCS})
FL_ADD_LIBRARY(fltk_cairo STATIC "${cairo_SRCS}")
if(MSVC)
set_target_properties(fltk_cairo
PROPERTIES
OUTPUT_NAME fltkcairo
DEBUG_OUTPUT_NAME fltkcairod
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_cairo PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
endif(MSVC)
#######################################################################
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
FL_ADD_LIBRARY(fltk_cairo SHARED "${cairo_SRCS}")
install(TARGETS fltk_cairo
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
#######################################################################
endif(OPTION_BUILD_SHARED_LIBS)
#######################################################################

View File

@ -1,39 +1,30 @@
set(CPPFILES
CodeEditor.cxx
Fl_Function_Type.cxx
Fl_Group_Type.cxx
Fl_Menu_Type.cxx
Fl_Type.cxx
Fl_Widget_Type.cxx
Fl_Window_Type.cxx
Fluid_Image.cxx
about_panel.cxx
align_widget.cxx
alignment_panel.cxx
code.cxx
factory.cxx
file.cxx
fluid.cxx
function_panel.cxx
template_panel.cxx
undo.cxx
widget_panel.cxx
CodeEditor.cxx
Fl_Function_Type.cxx
Fl_Group_Type.cxx
Fl_Menu_Type.cxx
Fl_Type.cxx
Fl_Widget_Type.cxx
Fl_Window_Type.cxx
Fluid_Image.cxx
about_panel.cxx
align_widget.cxx
alignment_panel.cxx
code.cxx
factory.cxx
file.cxx
fluid.cxx
function_panel.cxx
template_panel.cxx
undo.cxx
widget_panel.cxx
)
add_executable(fluid ${CPPFILES})
target_link_libraries(fluid fltk fltk_images fltk_forms)
# link in optional libraries
if(FLTK_HAVE_CAIRO)
target_link_libraries(fluid fltk_cairo)
endif(FLTK_HAVE_CAIRO)
if(FLTK_USE_GL)
target_link_libraries(fluid fltk_gl)
target_link_libraries(fluid ${OPENGL_LIBRARIES})
endif(FLTK_USE_GL)
if(USE_XFT)
target_link_libraries(fluid ${X11_Xft_LIB})
endif(USE_XFT)
@ -43,6 +34,8 @@ if(HAVE_XINERAMA)
endif(HAVE_XINERAMA)
install(TARGETS fluid
EXPORT fltk-install
DESTINATION ${PREFIX_BIN}
)
EXPORT FLTK-Targets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)

View File

@ -1,9 +1,3 @@
project(FLTKJPEG)
include_regular_expression("^j.*[.][c|h]$")
include_directories(${FLTKJPEG_SOURCE_DIR})
include_directories(${FLTKJPEG_BINARY_DIR})
# memmgr back ends: compile only one of these into a working library
# (For now, let's use the mode that requires the image fit into memory.
@ -31,21 +25,16 @@ set(decompression_SRCS
jdsample.c jdcolor.c jquant1.c jquant2.c jdmerge.c
)
list(APPEND BUILD_SRCS "${systemdependent_SRCS};${common_SRCS}")
list(APPEND BUILD_SRCS "${compression_SRCS};${decompression_SRCS}")
#######################################################################
add_library(fltk_jpeg ${systemdependent_SRCS} ${common_SRCS} ${compression_SRCS} ${decompression_SRCS})
FL_ADD_LIBRARY(fltk_jpeg STATIC "${BUILD_SRCS}")
if(MSVC)
set_target_properties(fltk_jpeg
PROPERTIES
OUTPUT_NAME fltkjpeg
DEBUG_OUTPUT_NAME fltkjpegd
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_jpeg PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
endif(MSVC)
#######################################################################
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
FL_ADD_LIBRARY(fltk_jpeg SHARED "${BUILD_SRCS}")
install(TARGETS fltk_jpeg
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
#######################################################################
endif(OPTION_BUILD_SHARED_LIBS)
#######################################################################

View File

@ -1,11 +1,3 @@
project(FLTKPNG)
include_regular_expression("^png.*[.][c|h]$")
include_directories(${FLTKZLIB_SOURCE_DIR})
include_directories(${ZLIB_INCLUDE_DIR})
include_directories(${FLTKPNG_SOURCE_DIR})
include_directories(${FLTKPNG_BINARY_DIR})
# source files for png
set(PNG_SRCS
@ -16,20 +8,25 @@ set(PNG_SRCS
)
#######################################################################
add_library(fltk_png ${PNG_SRCS})
FL_ADD_LIBRARY(fltk_png STATIC "${PNG_SRCS}")
if(MSVC)
set_target_properties(fltk_png PROPERTIES OUTPUT_NAME fltkpng)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_png PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
if(OPTION_USE_SYSTEM_ZLIB)
target_link_libraries(fltk_png ${FLTK_ZLIB_LIBRARIES})
else()
set_target_properties(fltk_png PROPERTIES OUTPUT_NAME fltk_png)
endif(MSVC)
target_link_libraries(fltk_png fltk_z)
endif(OPTION_USE_SYSTEM_ZLIB)
target_link_libraries(fltk_png ${FLTK_ZLIB_LIBRARIES})
#######################################################################
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
FL_ADD_LIBRARY(fltk_png SHARED "${PNG_SRCS}")
install(TARGETS fltk_png
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
if(OPTION_USE_SYSTEM_ZLIB)
target_link_libraries(fltk_png_SHARED ${FLTK_ZLIB_LIBRARIES})
else()
target_link_libraries(fltk_png_SHARED fltk_z_SHARED)
endif(OPTION_USE_SYSTEM_ZLIB)
#######################################################################
endif(OPTION_BUILD_SHARED_LIBS)
#######################################################################

View File

@ -1,4 +1,3 @@
include_regular_expression("[.][cxx|c|h]$")
set(CPPFILES
Fl.cxx
@ -19,6 +18,7 @@ set(CPPFILES
Fl_Counter.cxx
Fl_Device.cxx
Fl_Dial.cxx
Fl_Help_Dialog_Dox.cxx
Fl_Double_Window.cxx
Fl_File_Browser.cxx
Fl_File_Chooser.cxx
@ -200,30 +200,19 @@ set(CFILES
add_definitions(-DFL_LIBRARY)
if(APPLE)
set(MMFILES
Fl_cocoa.mm
Fl_Quartz_Printer.mm
Fl_Native_File_Chooser_MAC.mm
Fl_Sys_Menu_Bar.mm
)
set(MMFILES
Fl_cocoa.mm
Fl_Quartz_Printer.mm
Fl_Native_File_Chooser_MAC.mm
Fl_Sys_Menu_Bar.mm
)
else()
set(MMFILES
)
endif(APPLE)
#######################################################################
add_library(fltk STATIC ${CPPFILES} ${MMFILES} ${CFILES} fl_call_main.c)
set_target_properties(fltk PROPERTIES CLEAN_DIRECT_OUTPUT 1)
if(MSVC)
if(OPTION_LARGE_FILE)
set_target_properties(fltk PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif()
set_target_properties(fltk
PROPERTIES
OUTPUT_NAME fltk
DEBUG_OUTPUT_NAME fltkd
)
endif(MSVC)
FL_ADD_LIBRARY(fltk STATIC "${CPPFILES};${MMFILES};${CFILES};fl_call_main.c")
if(USE_THREADS)
target_link_libraries(fltk ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl})
@ -261,64 +250,36 @@ if(USE_XFT)
endif(USE_XFT)
#######################################################################
add_library(fltk_forms STATIC ${FLCPPFILES})
FL_ADD_LIBRARY(fltk_forms STATIC "${FLCPPFILES}")
target_link_libraries(fltk_forms fltk)
set_target_properties(fltk_forms
PROPERTIES CLEAN_DIRECT_OUTPUT 1
)
if(MSVC)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_forms PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif()
set_target_properties(fltk_forms
PROPERTIES
OUTPUT_NAME fltkforms
DEBUG_OUTPUT_NAME fltkformsd
)
endif(MSVC)
#######################################################################
add_library(fltk_images STATIC ${IMGCPPFILES})
FL_ADD_LIBRARY(fltk_images STATIC "${IMGCPPFILES}")
target_link_libraries(fltk_images fltk ${FLTK_PNG_LIBRARIES}
${FLTK_JPEG_LIBRARIES} ${FLTK_ZLIB_LIBRARIES})
set_target_properties(fltk_images PROPERTIES CLEAN_DIRECT_OUTPUT 1)
if(MSVC)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_images PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif()
set_target_properties(fltk_images
PROPERTIES
OUTPUT_NAME fltkimages
DEBUG_OUTPUT_NAME fltkimagesd
)
endif(MSVC)
#######################################################################
install(TARGETS fltk fltk_forms fltk_images
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
if(OPTION_USE_SYSTEM_LIBJPEG)
target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES})
else()
target_link_libraries(fltk_images fltk_jpeg)
endif(OPTION_USE_SYSTEM_LIBJPEG)
if(OPTION_USE_SYSTEM_ZLIB)
target_link_libraries(fltk_images ${FLTK_ZLIB_LIBRARIES})
else()
target_link_libraries(fltk_images fltk_z)
endif(OPTION_USE_SYSTEM_ZLIB)
if(OPTION_USE_SYSTEM_LIBPNG)
target_link_libraries(fltk_images ${FLTK_PNG_LIBRARIES})
else()
target_link_libraries(fltk_images fltk_png)
endif(OPTION_USE_SYSTEM_LIBPNG)
#######################################################################
if(OPENGL_FOUND)
add_library(fltk_gl STATIC ${GLCPPFILES})
FL_ADD_LIBRARY(fltk_gl STATIC "${GLCPPFILES}")
target_link_libraries(fltk_gl fltk ${OPENGL_LIBRARIES})
set_target_properties(fltk_gl PROPERTIES CLEAN_DIRECT_OUTPUT 1)
if(MSVC)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_gl PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif()
set_target_properties(fltk_gl
PROPERTIES
OUTPUT_NAME fltkgl
DEBUG_OUTPUT_NAME fltkgld
)
endif(MSVC)
install(TARGETS fltk_gl
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
endif(OPENGL_FOUND)
#######################################################################
@ -326,25 +287,7 @@ endif(OPENGL_FOUND)
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
add_library(fltk_SHARED SHARED ${CPPFILES} ${MMFILES} ${CFILES})
set_target_properties(fltk_SHARED
PROPERTIES CLEAN_DIRECT_OUTPUT 1
VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
SOVERSION ${FLTK_VERSION_PATCH}
)
if(MSVC)
set_target_properties(fltk_SHARED
PROPERTIES
OUTPUT_NAME fltkdll
DEBUG_OUTPUT_NAME fltkdlld
COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
else()
set_target_properties(fltk_SHARED PROPERTIES OUTPUT_NAME fltk)
endif(MSVC)
FL_ADD_LIBRARY(fltk SHARED "${CPPFILES};${MMFILES};${CFILES}")
if(USE_THREADS)
target_link_libraries(fltk_SHARED ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl})
@ -359,7 +302,7 @@ if(WIN32)
endif(WIN32)
if(FLTK_HAVE_CAIRO)
target_link_libraries(fltk_SHARED fltk_cairo ${PKG_CAIRO_LIBRARIES})
target_link_libraries(fltk_SHARED fltk_cairo_SHARED ${PKG_CAIRO_LIBRARIES})
ENDif(FLTK_HAVE_CAIRO)
if(HAVE_XINERAMA)
@ -374,26 +317,8 @@ if(USE_XFT)
endif(USE_XFT)
#######################################################################
add_library(fltk_forms_SHARED SHARED ${FLCPPFILES})
FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}")
target_link_libraries(fltk_forms_SHARED fltk_SHARED)
set_target_properties(fltk_forms_SHARED
PROPERTIES CLEAN_DIRECT_OUTPUT 1
VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
SOVERSION ${FLTK_VERSION_PATCH}
)
if(MSVC)
set_target_properties(fltk_forms_SHARED
PROPERTIES
OUTPUT_NAME fltkformsdll
DEBUG_OUTPUT_NAME fltkformsdlld
COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_forms_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
else()
set_target_properties(fltk_forms_SHARED PROPERTIES OUTPUT_NAME fltk_forms)
endif(MSVC)
if(USE_THREADS)
target_link_libraries(fltk_forms_SHARED ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl})
@ -404,62 +329,33 @@ if(USE_X11)
endif(USE_X11)
#######################################################################
add_library(fltk_images_SHARED SHARED ${IMGCPPFILES})
target_link_libraries(fltk_images_SHARED fltk_SHARED
${FLTK_PNG_LIBRARIES} ${FLTK_JPEG_LIBRARIES} ${FLTK_ZLIB_LIBRARIES}
)
set_target_properties(fltk_images_SHARED
PROPERTIES CLEAN_DIRECT_OUTPUT 1
VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
SOVERSION ${FLTK_VERSION_PATCH}
)
if(MSVC)
set_target_properties(fltk_images_SHARED
PROPERTIES
OUTPUT_NAME fltkimagesdll
DEBUG_OUTPUT_NAME fltkimagesdlld
COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_images_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
else()
set_target_properties(fltk_images_SHARED PROPERTIES OUTPUT_NAME fltk_images)
endif(MSVC)
FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}")
target_link_libraries(fltk_images_SHARED fltk_SHARED)
#######################################################################
install(TARGETS fltk_SHARED fltk_forms_SHARED fltk_images_SHARED
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
if(OPTION_USE_SYSTEM_LIBJPEG)
target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES})
else()
target_link_libraries(fltk_images_SHARED fltk_jpeg_SHARED)
endif(OPTION_USE_SYSTEM_LIBJPEG)
if(OPTION_USE_SYSTEM_ZLIB)
target_link_libraries(fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES})
else()
target_link_libraries(fltk_images_SHARED fltk_z_SHARED)
endif(OPTION_USE_SYSTEM_ZLIB)
if(OPTION_USE_SYSTEM_LIBPNG)
target_link_libraries(fltk_images_SHARED ${FLTK_PNG_LIBRARIES})
else()
target_link_libraries(fltk_images_SHARED fltk_png_SHARED)
endif(OPTION_USE_SYSTEM_LIBPNG)
#######################################################################
if(OPENGL_FOUND)
add_library(fltk_gl_SHARED SHARED ${GLCPPFILES})
FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES}")
target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
set_target_properties(fltk_gl_SHARED
PROPERTIES CLEAN_DIRECT_OUTPUT 1
VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
SOVERSION ${FLTK_VERSION_PATCH}
)
if(MSVC)
set_target_properties(fltk_gl_SHARED
PROPERTIES
OUTPUT_NAME fltkgldll
DEBUG_OUTPUT_NAME fltkgldlld
COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_gl_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
else()
set_target_properties(fltk_gl_SHARED PROPERTIES OUTPUT_NAME fltk_gl)
endif(MSVC)
install(TARGETS fltk_gl_SHARED
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
endif(OPENGL_FOUND)
#######################################################################
endif(OPTION_BUILD_SHARED_LIBS)
#######################################################################

View File

@ -10,46 +10,6 @@ elseif(HAVE_ALSA_ASOUNDLIB_H)
set(AUDIOLIBS -lasound)
endif(WIN32)
#######################################################################
macro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
set(srcs)
set(flsrcs)
foreach(src ${SOURCES})
if("${src}" MATCHES ".fl$")
list(APPEND flsrcs ${src})
else()
list(APPEND srcs ${src})
endif("${src}" MATCHES ".fl$")
endforeach(src)
if(flsrcs)
fltk_wrap_ui(${NAME} ${flsrcs})
endif(flsrcs)
add_executable(${NAME} WIN32 ${srcs} ${${NAME}_FLTK_UI_SRCS})
if(flsrcs)
add_dependencies(${NAME} ${FLTK_FLUID_EXECUTABLE})
endif(flsrcs)
target_link_libraries(${NAME} ${LIBRARIES})
# link in optional libraries
if(FLTK_HAVE_CAIRO)
target_link_libraries(${NAME} fltk_cairo)
endif(FLTK_HAVE_CAIRO)
if(USE_XFT)
target_link_libraries(${NAME} ${X11_Xft_LIB})
endif(USE_XFT)
if(HAVE_XINERAMA)
target_link_libraries(${NAME} ${X11_Xinerama_LIB})
endif(HAVE_XINERAMA)
install(TARGETS ${NAME}
DESTINATION ${PREFIX_DOC}/examples
)
endmacro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
#######################################################################
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
@ -137,5 +97,5 @@ endif(OPENGL_FOUND)
# Cairo demo
if(FLTK_HAVE_CAIRO)
CREATE_EXAMPLE(cairo_test cairo_test.cxx fltk)
CREATE_EXAMPLE(cairo_test cairo_test.cxx "fltk;fltk_cairo")
endif(FLTK_HAVE_CAIRO)

View File

@ -1,32 +1,20 @@
project(FLTKZLIB)
include_regular_expression(regex_match "[.][h|c]$")
include_directories(${FLTKZLIB_SOURCE_DIR})
include_directories(${FLTKZLIB_BINARY_DIR})
# source files for zlib
set(ZLIB_SRCS
adler32.c compress.c crc32.c deflate.c
adler32.c compress.c crc32.c deflate.c
gzclose.c gzlib.c gzread.c gzwrite.c
inffast.c infback.c inflate.c inftrees.c
inffast.c infback.c inflate.c inftrees.c
trees.c uncompr.c zutil.c
)
#######################################################################
add_library(fltk_z ${ZLIB_SRCS})
FL_ADD_LIBRARY(fltk_z STATIC "${ZLIB_SRCS}")
if(MSVC)
set_target_properties(fltk_z
PROPERTIES
OUTPUT_NAME zlib
DEBUG_OUTPUT_NAME zlibd
)
if(OPTION_LARGE_FILE)
set_target_properties(fltk_z PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
endif(OPTION_LARGE_FILE)
endif(MSVC)
#######################################################################
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
FL_ADD_LIBRARY(fltk_z SHARED "${ZLIB_SRCS}")
install(TARGETS fltk_z
EXPORT fltk-install
DESTINATION ${PREFIX_LIB}
)
#######################################################################
endif(OPTION_BUILD_SHARED_LIBS)
#######################################################################