mirror of
https://github.com/fltk/fltk.git
synced 2026-02-05 15:59:50 +08:00
Simplify CMake build config for test and demo programs
Define platform specific library names as CMake variables so they can be used to build demo programs w/o platform specific instructions. This includes optional components (e.g. OpenGL) and the MSVC specific extra object library (call_main) and the fact that we build only one "monolithic" shared library with MSVC. Also, enable building FLTK Forms library in CI builds.
This commit is contained in:
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
||||
# Note the current convention is to use the -S and -B options here to specify source
|
||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -D FLTK_BACKEND_WAYLAND=OFF -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused"
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -D FLTK_BACKEND_WAYLAND=OFF -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D FLTK_BUILD_FORMS=ON -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused"
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
# Note the current convention is to use the -S and -B options here to specify source
|
||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused -Wsuggest-override"
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D FLTK_BUILD_FORMS=ON -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused -Wsuggest-override"
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
@@ -103,7 +103,7 @@ jobs:
|
||||
# Note the current convention is to use the -S and -B options here to specify source
|
||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -DFLTK_BUILD_SHARED_LIBS:BOOL=ON -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused -Wsuggest-override"
|
||||
run: cmake $GITHUB_WORKSPACE -D CMAKE_BUILD_TYPE=$BUILD_TYPE -DFLTK_BUILD_SHARED_LIBS:BOOL=ON -D FLTK_BUILD_FORMS=ON -D CMAKE_CXX_STANDARD=11 -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused -Wsuggest-override"
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
@@ -130,7 +130,7 @@ jobs:
|
||||
|
||||
- name: Configure CMake
|
||||
working-directory: ${{github.workspace}}/build
|
||||
run: cmake -D FLTK_USE_SYSTEM_LIBJPEG:BOOL=OFF -D FLTK_USE_SYSTEM_LIBPNG:BOOL=OFF -D FLTK_USE_SYSTEM_ZLIB:BOOL=OFF -DFLTK_BUILD_SHARED_LIBS:BOOL=ON ..
|
||||
run: cmake -D FLTK_USE_SYSTEM_LIBJPEG:BOOL=OFF -D FLTK_USE_SYSTEM_LIBPNG:BOOL=OFF -D FLTK_USE_SYSTEM_ZLIB:BOOL=OFF -D FLTK_BUILD_FORMS=ON -DFLTK_BUILD_SHARED_LIBS:BOOL=ON ..
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
|
||||
@@ -54,22 +54,44 @@ endif(WIN32)
|
||||
# w/o OpenGL as well. These demos show an alternate GUI or a warning
|
||||
# when built w/o OpenGL.
|
||||
#
|
||||
# Note: use "${GLDEMO_LIBS}" for their library parameter
|
||||
# or "${GLDEMO_SHARED}" to build with shared FLTK libraries
|
||||
# For building with Visual Studio (MSVC) we also include the special
|
||||
# object library 'call_main' when linking with the shared libraries.
|
||||
# Setting the correct library variants as CMake variables may appear
|
||||
# confusing but simplifies the build instructions below (makes them
|
||||
# platform independent).
|
||||
#
|
||||
# Note that all CMake variables for libraries can be "CMake lists"
|
||||
# and must therefore be quoted when used in fl_create_example().
|
||||
#######################################################################
|
||||
|
||||
if(OPENGL_FOUND)
|
||||
set(GLDEMO_LIBS fltk::gl)
|
||||
if(MSVC)
|
||||
set(GLDEMO_SHARED fltk::fltk-shared)
|
||||
set(GLDEMO_SHARED "call_main;fltk::fltk-shared")
|
||||
else()
|
||||
set(GLDEMO_SHARED fltk::gl-shared)
|
||||
endif()
|
||||
else()
|
||||
# build w/o OpenGL libraries
|
||||
set(GLDEMO_LIBS fltk::fltk)
|
||||
set(GLDEMO_SHARED fltk::fltk-shared)
|
||||
if(MSVC)
|
||||
set(GLDEMO_SHARED "call_main;fltk::fltk-shared")
|
||||
else()
|
||||
set(GLDEMO_SHARED "fltk::fltk-shared")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Similar approach for the 'forms' demo (shared lib not supported)
|
||||
# set FLTK_SHARED and IMAGES_SHARED depending on the platform (MSVC or ...)
|
||||
|
||||
if(MSVC)
|
||||
set(FLTK_SHARED "call_main;fltk::fltk-shared")
|
||||
set(IMAGES_SHARED "${FLTK_SHARED}")
|
||||
else()
|
||||
set(FLTK_SHARED "fltk::fltk-shared")
|
||||
set(IMAGES_SHARED "fltk::images-shared")
|
||||
endif()
|
||||
|
||||
# similar for the 'forms' demo (shared lib not supported)
|
||||
|
||||
if(FLTK_BUILD_FORMS)
|
||||
set(FORMS_LIBS fltk::forms)
|
||||
@@ -173,11 +195,11 @@ fl_create_example(valuators valuators.fl fltk::fltk)
|
||||
fl_create_example(windowfocus windowfocus.cxx fltk::fltk)
|
||||
fl_create_example(wizard wizard.cxx fltk::fltk)
|
||||
|
||||
# games
|
||||
# games w/o shared libs
|
||||
|
||||
if(NOT FLTK_BUILD_SHARED_LIBS)
|
||||
fl_create_example(blocks "blocks.cxx;blocks.plist;blocks.icns" "fltk::fltk;${AUDIOLIBS}")
|
||||
fl_create_example(checkers "checkers.cxx;checkers_pieces.fl;checkers.icns" fltk::images)
|
||||
fl_create_example(checkers "checkers.cxx;checkers.plist;checkers_pieces.fl;checkers.icns" fltk::images)
|
||||
fl_create_example(sudoku "sudoku.cxx;sudoku.plist;sudoku.icns;sudoku.rc" "fltk::images;${AUDIOLIBS}")
|
||||
endif()
|
||||
|
||||
@@ -275,47 +297,27 @@ if(CMAKE_CXX_COMPILER_ID IN_LIST _compilers)
|
||||
endif() # GNU or Clang (-Wshadow test)
|
||||
unset(_compilers)
|
||||
|
||||
# Build some of the demo programs linked against the shared FLTK lib(s).
|
||||
#########################################################################
|
||||
# Build some of the demo programs linked against the shared FLTK lib(s)
|
||||
#########################################################################
|
||||
|
||||
if(FLTK_BUILD_SHARED_LIBS)
|
||||
|
||||
if(MSVC) # MS Visual C++ aka. Visual Studio
|
||||
fl_create_example(cairo_test-shared cairo_test.cxx "${FLTK_SHARED}")
|
||||
fl_create_example(hello-shared hello.cxx "${FLTK_SHARED}")
|
||||
fl_create_example(pixmap_browser-shared pixmap_browser.cxx "${IMAGES_SHARED}")
|
||||
fl_create_example(unittests-shared "${UNITTEST_SRCS}" "${GLDEMO_SHARED}")
|
||||
|
||||
# We need to link with fl_call_main.c which is available as an object
|
||||
# library 'call_main' when built with MSVC (see main CMakeLists.txt).
|
||||
# Games
|
||||
fl_create_example(blocks-shared "blocks.cxx;blocks.plist;blocks.icns" "${FLTK_SHARED};${AUDIOLIBS}")
|
||||
fl_create_example(checkers-shared "checkers.cxx;checkers.plist;checkers_pieces.fl;checkers.icns" "${IMAGES_SHARED}")
|
||||
fl_create_example(sudoku-shared "sudoku.cxx;sudoku.plist;sudoku.icns;sudoku.rc" "${IMAGES_SHARED};${AUDIOLIBS}")
|
||||
|
||||
fl_create_example(hello-shared hello.cxx "call_main;fltk::fltk-shared")
|
||||
fl_create_example(pixmap_browser-shared pixmap_browser.cxx "call_main;fltk::fltk-shared")
|
||||
fl_create_example(unittests-shared "${UNITTEST_SRCS}" "call_main;${GLDEMO_SHARED}")
|
||||
|
||||
# Games
|
||||
fl_create_example(blocks-shared "blocks.cxx;blocks.plist;blocks.icns" "call_main;fltk::fltk-shared;${AUDIOLIBS}")
|
||||
fl_create_example(checkers-shared "checkers.cxx;checkers_pieces.fl;checkers.icns" "call_main;fltk::fltk-shared")
|
||||
fl_create_example(sudoku-shared "sudoku.cxx;sudoku.plist;sudoku.icns;sudoku.rc" "call_main;fltk::fltk-shared;${AUDIOLIBS}")
|
||||
|
||||
if(OPENGL_FOUND)
|
||||
fl_create_example(glpuzzle-shared glpuzzle.cxx "call_main;${GLDEMO_SHARED}")
|
||||
fl_create_example(shape-shared shape.cxx "call_main;${GLDEMO_SHARED}")
|
||||
endif(OPENGL_FOUND)
|
||||
|
||||
else() # not MSVC
|
||||
|
||||
fl_create_example(cairo_test-shared cairo_test.cxx fltk::fltk-shared)
|
||||
fl_create_example(hello-shared hello.cxx fltk::fltk-shared)
|
||||
fl_create_example(pixmap_browser-shared pixmap_browser.cxx fltk::images-shared)
|
||||
fl_create_example(unittests-shared "${UNITTEST_SRCS}" "${GLDEMO_SHARED}")
|
||||
|
||||
# Games
|
||||
fl_create_example(blocks-shared "blocks.cxx;blocks.plist;blocks.icns" "fltk::fltk-shared;${AUDIOLIBS}")
|
||||
fl_create_example(checkers-shared "checkers.cxx;checkers_pieces.fl;checkers.icns" fltk::images-shared)
|
||||
fl_create_example(sudoku-shared "sudoku.cxx;sudoku.plist;sudoku.icns;sudoku.rc" "fltk::images-shared;${AUDIOLIBS}")
|
||||
|
||||
if(OPENGL_FOUND)
|
||||
fl_create_example(glpuzzle-shared glpuzzle.cxx "${GLDEMO_SHARED}")
|
||||
fl_create_example(shape-shared shape.cxx "${GLDEMO_SHARED}")
|
||||
endif(OPENGL_FOUND)
|
||||
|
||||
endif(MSVC) # (not MSVC)
|
||||
# demo programs that can't be built w/o OpenGL
|
||||
if(OPENGL_FOUND)
|
||||
fl_create_example(glpuzzle-shared glpuzzle.cxx "${GLDEMO_SHARED}")
|
||||
fl_create_example(shape-shared shape.cxx "${GLDEMO_SHARED}")
|
||||
endif(OPENGL_FOUND)
|
||||
|
||||
endif(FLTK_BUILD_SHARED_LIBS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user