include(CMakeParseArguments) macro(pre_build TARGET_NAME) add_custom_target( ${TARGET_NAME}_PRE_BUILD ALL ) add_custom_command( TARGET ${TARGET_NAME}_PRE_BUILD ${ARGN} PRE_BUILD COMMENT "${TARGET_NAME}_PRE_BUILD ..." ) add_custom_target(${TARGET_NAME}_CORE_PRE_BUILD) add_dependencies(${TARGET_NAME}_PRE_BUILD ${TARGET_NAME}_CORE_PRE_BUILD) add_dependencies(${TARGET_NAME} ${TARGET_NAME}_PRE_BUILD) endmacro() function(cocos_mark_resources) set(oneValueArgs BASEDIR RESOURCEBASE) set(multiValueArgs FILES) cmake_parse_arguments(opt "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(NOT opt_RESOURCEBASE) set(opt_RESOURCEBASE Resources) endif() get_filename_component(BASEDIR_ABS ${opt_BASEDIR} ABSOLUTE) foreach(RES_FILE ${opt_FILES} ${opt_UNPARSED_ARGUMENTS}) get_filename_component(RES_FILE_ABS ${RES_FILE} ABSOLUTE) file(RELATIVE_PATH RES ${BASEDIR_ABS} ${RES_FILE_ABS}) get_filename_component(RES_LOC ${RES} PATH) set_source_files_properties(${RES_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION "${opt_RESOURCEBASE}/${RES_LOC}" HEADER_FILE_ONLY 1 ) endforeach() endfunction() #cmake has some strange defaults, this should help us a lot #Please use them everywhere #WINDOWS = Windows Desktop #WINRT = Windows RT #WP8 = Windows Phone 8 #ANDROID = Android #IOS = iOS #MACOSX = MacOS X #LINUX = Linux if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") if(WINRT) set(SYSTEM_STRING "Windows RT") elseif(WP8) set(SYSTEM_STRING "Windows Phone 8") else() set(WINDOWS TRUE) set(SYSTEM_STRING "Windows Desktop") endif() elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(ANDROID) set(SYSTEM_STRING "Android") else() set(LINUX TRUE) set(SYSTEM_STRING "Linux") endif() elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if(IOS) set(SYSTEM_STRING "IOS") else() set(MACOSX TRUE) set(APPLE TRUE) set(SYSTEM_STRING "Mac OSX") endif() endif() if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(COMPILER_STRING ${CMAKE_CXX_COMPILER_ID}) set(CLANG TRUE) elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if(MINGW) set(COMPILER_STRING "Mingw GCC") else() set(COMPILER_STRING "GCC") endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") set(COMPILER_STRING "${CMAKE_CXX_COMPILER_ID} C++") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") set(COMPILER_STRING "Visual Studio C++") endif() if(CMAKE_CROSSCOMPILING) set(BUILDING_STRING "It appears you are cross compiling for ${SYSTEM_STRING} with ${COMPILER_STRING}") else() set(BUILDING_STRING "It appears you are builing natively for ${SYSTEM_STRING} with ${COMPILER_STRING}") endif()