Mercurial > malikania
view cmake/function/MalikaniaBuildAssets.cmake @ 106:f8c6d2244795
Server: rework model and dao
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 04 Sep 2017 19:41:18 +0200 |
parents | 858621081b95 |
children | 119bcc5a727e |
line wrap: on
line source
# # MalikaniaBuildAssets.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. # # # malikania_build_assets # ---------------------- # # malikania_build_assets(inputs outputs) # # Create binary data as C++ arrays for inclusion in source code. Static assets # increases the executable size so use this when really needed. # # The macro iterates over the input data which can be any files and generates # outputs file in the form CMAKE_CURRENT_BINARY_DIR/assets/basename.cpp. # # The macro removes the extension from the filename and create a static array # with that name, thus you need to specify a filename that is compatible with # C++ identifiers! # # Correct: # - myfile.png # - startup_logo.png # # Incorrect: # - useful-code.ogg # - archive.tar.xz # # Note: this macro requires the target mlk-bcc (tools/bcc directory). # macro(malikania_build_assets inputs outputs) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/assets) foreach (in ${inputs}) get_filename_component(basename ${in} NAME_WE) set(out ${CMAKE_CURRENT_BINARY_DIR}/assets/${basename}.cpp) add_custom_command( OUTPUT ${out} COMMENT "Generating binary data from ${in}" DEPENDS ${in} COMMAND $<TARGET_FILE:mlk-bcc> ${basename} ${in} ${out} ) list(APPEND ${outputs} ${out}) endforeach () endmacro()