Mercurial > malikania
diff cmake/function/MalikaniaDefineExample.cmake @ 80:a162f380f02e
CMake: create examples, closes #615
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 22 Jan 2017 09:59:14 +0100 |
parents | |
children | 119bcc5a727e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/function/MalikaniaDefineExample.cmake Sun Jan 22 09:59:14 2017 +0100 @@ -0,0 +1,39 @@ +# +# MalikaniaDefineExample.cmake -- CMake build system for malikania +# +# Copyright (c) 2013-2017 Malikania Authors +# +# 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. +# + +include(CMakeParseArguments) + +include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaVeraCheck.cmake) + +function(malikania_define_example) + set(singleArgs TARGET) + set(multiArgs FLAGS 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 () + + list(APPEND EXP_FLAGS SOURCE_DIRECTORY=\"${CMAKE_CURRENT_SOURCE_DIR}/resources\") + add_executable(example-${EXP_TARGET} ${EXP_SOURCES}) + target_link_libraries(example-${EXP_TARGET} ${EXP_LIBRARIES}) + target_compile_definitions(example-${EXP_TARGET} PRIVATE ${EXP_FLAGS}) +endfunction()