"automate" demos build with GLOB

This commit is contained in:
qPCR4vir 2016-02-16 18:22:13 +01:00
parent f8991cbbd9
commit 999a1e7cbc

View File

@ -18,6 +18,7 @@ option(ENABLE_AUDIO "Enable class audio::play for PCM playback." OFF)
option(CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilation." OFF)
option(CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON)
option(BUILD_NANA_DEMOS "Build all the demos form the nana_demo repository." OFF)
# The ISO C++ File System Technical Specification is optional.
# http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf
# This is not a workaround, but an user option.
@ -195,22 +196,24 @@ install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib)
# ??
install(DIRECTORY ${NANA_INCLUDE_DIR}/nana DESTINATION include)
#install(DIRECTORY ${NANA_INCLUDE_DIR}/nana DESTINATION include)
set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14 )
# TODO: move this nana-demo section to the nana demo repository, and here only include that cmake file
if (BUILD_NANA_DEMOS)
set (CMAKE_INSTALL_PREFIX ${DEMO_BIN})
set(DEMO_BIN ${NANA_SOURCE_DIR}../nana-demo/bin)
set(CMAKE_INSTALL_PREFIX )
add_executable(calculator ../nana-demo/calculator.cpp)
set_property( TARGET calculator PROPERTY CXX_STANDARD 14 )
target_link_libraries(calculator ${PROJECT_NAME} )
install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN})
if (BUILD_NANA_DEMOS_)
#set (CMAKE_INSTALL_PREFIX ${DEMO_BIN})
#set(DEMO_BIN ${NANA_SOURCE_DIR}../nana-demo/bin)
#set(CMAKE_INSTALL_PREFIX )
#add_executable(calculator ../nana-demo/calculator.cpp)
#set_property( TARGET calculator PROPERTY CXX_STANDARD 14 )
#target_link_libraries(calculator ${PROJECT_NAME} )
#install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN})
if (BUILD_FreeMe)
add_executable(FreeMe ../nana-demo/FreeMe.cpp)
@ -364,9 +367,72 @@ if (BUILD_NANA_DEMOS)
# target_link_libraries(${demoname} ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB})
#endforeach( demofile ${DEMO_SOURCES} )
endif(BUILD_NANA_DEMOS)
endif(BUILD_NANA_DEMOS_)
if (BUILD_NANA_DEMOS_temp)
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR})
set(DEMO_BIN ${CMAKE_INSTALL_PREFIX}../nana-demo/bin)
set (demos
calculator notepad widget_show widget_show2
)
# file_explorer
# FreeMe
foreach ( demo ${demos})
add_executable(${demo} "../nana-demo/${demo}.cpp")
set_property( TARGET ${demo} PROPERTY CXX_STANDARD 14 )
target_link_libraries(${demo} ${PROJECT_NAME})
install(TARGETS ${demo} RUNTIME DESTINATION &{DEMO_BIN})
message("... building ../nana-demo/${demo}.cpp" ) # dont works as I specte
endforeach( demo ${demos})
endif (BUILD_NANA_DEMOS)
if(BUILD_NANA_DEMOS)
# TODO: make it automatic to select each demo and example and build each.
set(NANA_DEMOS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../nana-demo/")
message ( "NANA_DEMOS_DIR = " ${NANA_DEMOS_DIR})
# https://cmake.org/cmake/help/v3.3/command/file.html?highlight=glob#file
file( GLOB DEMO_SOURCES RELATIVE ${NANA_DEMOS_DIR} *.cpp )
message ( "DEMO_SOURCES = " ${DEMO_SOURCES})
foreach( demofile ${DEMO_SOURCES} )
string( REPLACE ".cpp" "" demoname ${demofile} )
message ( "demofile = " ${demofile})
message ( "demoname = " ${demoname})
add_executable( ${demoname} ${demofile} )
set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 )
target_link_libraries(${demoname} ${PROJECT_NAME} )
endforeach( demofile ${DEMO_SOURCES} )
set(NANA_EXAMPLES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../nana-demo/Examples/")
message ( "NANA_EXAMPLES_DIR = " ${NANA_EXAMPLES_DIR})
file( GLOB EXAMPLES_SOURCES RELATIVE ${NANA_EXAMPLES_DIR} *.cpp )
message ( "EXAMPLES_SOURCES = " ${EXAMPLES_SOURCES})
foreach( demofile ${EXAMPLES_SOURCES} )
string( REPLACE ".cpp" "" demoname ${demofile} )
message ( "demofile = " ${demofile})
message ( "demoname = " ${demoname})
add_executable( ${demoname} ${demofile} )
set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 )
target_link_libraries(${demoname} ${PROJECT_NAME} )
endforeach( demofile ${EXAMPLES_SOURCES} )
add_executable(label_listener ../nana-demo/Examples/label_listener.cpp)
set_property( TARGET label_listener PROPERTY CXX_STANDARD 14 )
target_link_libraries(label_listener ${PROJECT_NAME})
endif(BUILD_NANA_DEMOS)
# set compile flags
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
@ -395,3 +461,4 @@ message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX})
message ( "CMAKE_EXE_LINKER_FLAGS = " ${CMAKE_EXE_LINKER_FLAGS})
message ( "NANA_LINKS = " ${NANA_LINKS})
message ( "ENABLE_AUDIO = " ${ENABLE_AUDIO})