Files
wxWidgets/build/cmake/demos/CMakeLists.txt
Jeff Bland fbf319641e Fix monolithic build in cmake (wxBUILD_MONOLITHIC)
- Functions that set wxMONO_* vars need to set them in parent scope, from macros instead of functions (functions would need grandparent scope)
- Fix a conflict with xml library linking Mono which made core include the wrong png headers
- Fix setting of NOPCH on windows to go through the wx_lib_compile_definitions instead of target_compile_definitions so it carries to monolithic build
- Allow use of precompiled header in MSVC via calling wx_finalize_lib(mono)
- Introduce wxMONO_NONCOMPILED_CPP_FILES to deal with set_source_files_properties only applying within the current CMakeLists file
- Fix demos building against monolithic library by using wx_exe_link_libraries instead of target_link_libraries (similar to what the tests already do)

Closes #18074
2018-05-18 19:52:42 -06:00

82 lines
2.3 KiB
CMake

#############################################################################
# Name: build/cmake/demos/CMakeLists.txt
# Purpose: CMake script for demos
# Author: Tobias Taschner
# Created: 2016-10-21
# Copyright: (c) 2016 wxWidgets development team
# Licence: wxWindows licence
#############################################################################
function(wx_add_demo name)
cmake_parse_arguments(DEMO "" "NAME" "DATA;LIBRARIES" ${ARGN})
if(NOT DEMO_NAME)
set(DEMO_NAME ${name})
endif()
wx_list_add_prefix(src_files
"${wxSOURCE_DIR}/demos/${name}/"
${DEMO_UNPARSED_ARGUMENTS})
if(WIN32)
list(APPEND src_files ${wxSOURCE_DIR}/demos/${name}/${DEMO_NAME}.rc)
endif()
add_executable(${DEMO_NAME} WIN32 MACOSX_BUNDLE ${src_files})
if(DEMO_DATA)
# TODO: unify with data handling for samples
# TODO: handle data files differently for OS X bundles
# Copy data files to output directory
foreach(data_file ${DEMO_DATA})
list(APPEND cmds COMMAND ${CMAKE_COMMAND}
-E copy ${wxSOURCE_DIR}/demos/${name}/${data_file}
${wxOUTPUT_DIR}/${wxPLATFORM_LIB_DIR}/${data_file})
endforeach()
add_custom_command(
TARGET ${DEMO_NAME} ${cmds}
COMMENT "Copying demo data files...")
endif()
if(wxBUILD_SHARED)
target_compile_definitions(${DEMO_NAME} PRIVATE WXUSINGDLL)
endif()
wx_exe_link_libraries(${DEMO_NAME} core ${DEMO_LIBRARIES})
wx_set_common_target_properties(${DEMO_NAME})
set_target_properties(${DEMO_NAME} PROPERTIES FOLDER "Demos")
set_target_properties(${DEMO_NAME} PROPERTIES
VS_DEBUGGER_WORKING_DIRECTORY "${wxOUTPUT_DIR}/${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}_${lib_suffix}"
)
endfunction()
wx_add_demo(bombs
bombs.cpp
bombs1.cpp
game.cpp
)
wx_add_demo(forty
forty.cpp
canvas.cpp
card.cpp
game.cpp
pile.cpp
playerdg.cpp
scoredg.cpp
scorefil.cpp
DATA
about.htm
LIBRARIES
html adv xml
)
wx_add_demo(fractal fractal.cpp)
wx_add_demo(life
life.cpp
dialogs.cpp
game.cpp
reader.cpp
DATA
breeder.lif
)
wx_add_demo(poem wxpoem.cpp
DATA
wxpoem.txt wxpoem.dat wxpoem.idx
LIBRARIES
html
NAME
wxpoem
)