view cmake/function/MalikaniaDefineExample.cmake @ 214:e2574aa8301d

client: add basic input text, closes #910
author David Demelier <markand@malikania.fr>
date Sun, 01 Sep 2019 06:53:48 +0200
parents 0a285d62ace7
children
line wrap: on
line source

#
# MalikaniaDefineExample.cmake -- CMake build system for malikania
#
# Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

#
# malikania_define_example
# ------------------------
#
# malikania_define_executable(
#       TARGET          The target name
#       SOURCES         The list of sources
#       FLAGS           (Optional) List of flags
#       INCLUDES        (Optional) List of include directories
#       LIBRARIES       (Optional) List of libraries
# )
#
# Create an example program.
#
# The example program is only built and never installed.
#
# The CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR are automatically
# set.
#

include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaBuildAssets.cmake)

function(malikania_define_example)
	set(singleArgs TARGET)
	set(multiArgs FLAGS INCLUDES LIBRARIES SOURCES)

	cmake_parse_arguments(EXP "" "${singleArgs}" "${multiArgs}" ${ARGN})

	if (NOT EXP_TARGET)
		message(FATAL_ERROR "Missing TARGET parameter")
	elseif (NOT EXP_SOURCES)
		message(FATAL_ERROR "Missing SOURCES parameter")
	endif ()

	add_executable(example-${EXP_TARGET} ${EXP_SOURCES})
	target_link_libraries(example-${EXP_TARGET} ${EXP_LIBRARIES})
	target_compile_definitions(
		example-${EXP_TARGET}
		PRIVATE
			CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
			CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}"
			${EXP_FLAGS}
	)
	target_include_directories(example-${EXP_TARGET} PRIVATE ${EXP_INCLUDES})
	set_target_properties(example-${EXP_TARGET} PROPERTIES FOLDER "examples")
endfunction()