@@ -2,37 +2,81 @@ include(CMakeParseArguments)
22
33# copy resource `FILES` and `FOLDERS` to TARGET_FILE_DIR/Resources
44function (cocos_copy_target_res cocos_target)
5- set (oneValueArgs COPY_TO )
6- set (multiValueArgs FILES FOLDERS)
5+ set (oneValueArgs LINK_TO )
6+ set (multiValueArgs FOLDERS)
77 cmake_parse_arguments (opt "" "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
8- # copy files
9- foreach (cc_file ${opt_FILES} )
10- get_filename_component (file_name ${cc_file} NAME )
11- add_custom_command (TARGET ${cocos_target} POST_BUILD
12- #COMMAND ${CMAKE_COMMAND} -E echo "copy-file into Resources: ${file_name} ..."
13- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${cc_file} "${opt_COPY_TO} /${file_name} "
8+
9+ if (NOT TARGET SYNC_RESOURCE-${cocos_target} )
10+ message (WARNING "SyncResource targe for ${cocos_target} is not defined" )
11+ return ()
12+ endif ()
13+
14+ # linking folders
15+ foreach (cc_folder ${opt_FOLDERS} )
16+ #get_filename_component(link_folder ${opt_LINK_TO} DIRECTORY)
17+ get_filename_component (link_folder_abs ${opt_LINK_TO} ABSOLUTE )
18+ add_custom_command (TARGET SYNC_RESOURCE-${cocos_target} POST_BUILD
19+ COMMAND ${CMAKE_COMMAND} -E echo " copying to ${link_folder_abs} "
20+ COMMAND ${PYTHON_COMMAND} ARGS ${COCOS2DX_ROOT_PATH} /cmake/scripts/sync_folder.py
21+ -s ${cc_folder} -d ${link_folder_abs}
1422 )
1523 endforeach ()
16- # copy folders files
17- foreach (cc_folder ${opt_FOLDERS} )
18- # file(GLOB_RECURSE folder_files "${cc_folder}/*")
19- # get_filename_component(folder_abs_path ${cc_folder} ABSOLUTE)
20- # foreach(res_file ${folder_files})
21- # get_filename_component(res_file_abs_path ${res_file} ABSOLUTE)
22- # file(RELATIVE_PATH res_file_relat_path ${folder_abs_path} ${res_file_abs_path})
23- # add_custom_command(TARGET ${cocos_target} POST_BUILD
24- # COMMAND ${CMAKE_COMMAND} -E echo "copy file into Resources: ${res_file_relat_path} ..."
25- # COMMAND ${CMAKE_COMMAND} -E copy_if_different ${res_file} "${opt_COPY_TO}/${res_file_relat_path}"
26- # )
27- # endforeach()
28- ### copy file by file is too slow on windows, the copy_directory improves a lot.
29- add_custom_command (TARGET ${cocos_target} POST_BUILD
30- #COMMAND ${CMAKE_COMMAND} -E echo "copy-dir into Resources: ${opt_COPY_TO} ..."
31- COMMAND ${CMAKE_COMMAND} -E copy_directory ${cc_folder} "${opt_COPY_TO} "
24+ endfunction ()
25+
26+ ## create a virtual target SYNC_RESOURCE-${cocos_target}
27+ ## Update resource files in Resources/ folder everytime when `Run/Debug` target.
28+ function (cocos_def_copy_resource_target cocos_target)
29+ add_custom_target (SYNC_RESOURCE-${cocos_target} ALL
30+ COMMAND ${CMAKE_COMMAND} -E echo "Copying resources for ${cocos_target} ..."
31+ )
32+ add_dependencies (${cocos_target} SYNC_RESOURCE-${cocos_target} )
33+ set_target_properties (SYNC_RESOURCE-${cocos_target} PROPERTIES
34+ FOLDER Utils
35+ )
36+ endfunction ()
37+
38+
39+ function (cocos_copy_lua_scripts cocos_target src_dir dst_dir)
40+ set (luacompile_target COPY_LUA-${cocos_target} )
41+ if (NOT TARGET ${luacompile_target} )
42+ add_custom_target (${luacompile_target} ALL
43+ COMMAND ${CMAKE_COMMAND} -E echo "Copying lua scripts ..."
44+ )
45+ add_dependencies (${cocos_target} ${luacompile_target} )
46+ set_target_properties (${luacompile_target} PROPERTIES
47+ FOLDER Utils
48+ )
49+ endif ()
50+ if (MSVC )
51+ add_custom_command (TARGET ${luacompile_target} POST_BUILD
52+ COMMAND ${PYTHON_COMMAND} ARGS ${COCOS2DX_ROOT_PATH} /cmake/scripts/sync_folder.py
53+ -s ${src_dir} -d ${dst_dir} -l ${LUAJIT32_COMMAND} -m $<CONFIG>
54+ )
55+ else ()
56+ if ("${CMAKE_BUILD_TYPE} " STREQUAL "" )
57+ add_custom_command (TARGET ${luacompile_target} POST_BUILD
58+ COMMAND ${PYTHON_COMMAND} ARGS ${COCOS2DX_ROOT_PATH} /cmake/scripts/sync_folder.py
59+ -s ${src_dir} -d ${dst_dir}
3260 )
33- endforeach ()
61+ else ()
62+ add_custom_command (TARGET ${luacompile_target} POST_BUILD
63+ COMMAND ${PYTHON_COMMAND} ARGS ${COCOS2DX_ROOT_PATH} /cmake/scripts/sync_folder.py
64+ -s ${src_dir} -d ${dst_dir} -l ${LUAJIT32_COMMAND} -m ${CMAKE_BUILD_TYPE}
65+ COMMAND ${PYTHON_COMMAND} ARGS ${COCOS2DX_ROOT_PATH} /cmake/scripts/sync_folder.py
66+ -s ${src_dir} -d ${dst_dir} /64bit -l ${LUAJIT64_COMMAND} -m ${CMAKE_BUILD_TYPE}
67+ )
68+ endif ()
69+ endif ()
70+
3471endfunction ()
3572
73+
74+ function (cocos_get_resource_path output cocos_target)
75+ get_target_property (rt_output ${cocos_target} RUNTIME_OUTPUT_DIRECTORY )
76+ set (${output} "${rt_output} /${CMAKE_CFG_INTDIR} /Resources" PARENT_SCOPE)
77+ endfunction ()
78+
79+
3680# mark `FILES` and files in `FOLDERS` as resource files, the destination is `RES_TO` folder
3781# save all marked files in `res_out`
3882function (cocos_mark_multi_resources res_out)
@@ -202,6 +246,15 @@ function(setup_cocos_app_config app_name)
202246 if (XCODE OR VS)
203247 cocos_mark_code_files(${app_name} )
204248 endif ()
249+
250+ if (XCODE)
251+ cocos_config_app_xcode_property(${app_name} )
252+ endif ()
253+
254+ if (LINUX OR WINDOWS)
255+ cocos_def_copy_resource_target(${app_name} )
256+ endif ()
257+
205258endfunction ()
206259
207260# if cc_variable not set, then set it cc_value
@@ -211,52 +264,6 @@ macro(cocos_set_default_value cc_variable cc_value)
211264 endif ()
212265endmacro ()
213266
214- # generate macOS app package infomations, need improve for example, the using of info.plist
215- function (cocos_pak_xcode cocos_target)
216- set (oneValueArgs
217- INFO_PLIST
218- BUNDLE_NAME
219- BUNDLE_VERSION
220- COPYRIGHT
221- GUI_IDENTIFIER
222- ICON_FILE
223- INFO_STRING
224- LONG_VERSION_STRING
225- SHORT_VERSION_STRING
226- )
227- set (multiValueArgs)
228- cmake_parse_arguments (ARGS "" "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
229-
230- string (TIMESTAMP ARGS_COPYRIGHT_YEAR "%Y" )
231- # set default value
232- cocos_set_default_value(ARGS_INFO_PLIST "MacOSXBundleInfo.plist.in" )
233- cocos_set_default_value(ARGS_BUNDLE_NAME "\$ {PRODUCT_NAME}" )
234- cocos_set_default_value(ARGS_BUNDLE_VERSION "1" )
235- cocos_set_default_value(ARGS_COPYRIGHT "Copyright © ${ARGS_COPYRIGHT_YEAR} . All rights reserved." )
236- cocos_set_default_value(ARGS_GUI_IDENTIFIER "org.cocos2dx.${APP_NAME} " )
237- cocos_set_default_value(ARGS_ICON_FILE "Icon" )
238- cocos_set_default_value(ARGS_INFO_STRING "cocos2d-x app" )
239- cocos_set_default_value(ARGS_LONG_VERSION_STRING "1.0.0" )
240- cocos_set_default_value(ARGS_SHORT_VERSION_STRING "1.0" )
241- # set default values for Info.plist template
242- set_target_properties (${cocos_target}
243- PROPERTIES
244- MACOSX_BUNDLE_INFO_PLIST ${ARGS_INFO_PLIST}
245- )
246- set (MACOSX_BUNDLE_BUNDLE_NAME ${ARGS_BUNDLE_NAME} PARENT_SCOPE)
247- set (MACOSX_BUNDLE_BUNDLE_VERSION ${ARGS_BUNDLE_VERSION} PARENT_SCOPE)
248- set (MACOSX_BUNDLE_COPYRIGHT ${ARGS_COPYRIGHT} PARENT_SCOPE)
249- set (MACOSX_BUNDLE_GUI_IDENTIFIER ${ARGS_GUI_IDENTIFIER} PARENT_SCOPE)
250- set (MACOSX_BUNDLE_ICON_FILE ${ARGS_ICON_FILE} PARENT_SCOPE)
251- set (MACOSX_BUNDLE_INFO_STRING ${ARGS_INFO_STRING} PARENT_SCOPE)
252- set (MACOSX_BUNDLE_LONG_VERSION_STRING ${ARGS_LONG_VERSION_STRING} PARENT_SCOPE)
253- set (MACOSX_BUNDLE_SHORT_VERSION_STRING ${ARGS_SHORT_VERSION_STRING} PARENT_SCOPE)
254-
255- message (STATUS "cocos package: ${cocos_target} , plist file: ${ARGS_INFO_PLIST} " )
256-
257- cocos_config_app_xcode_property(${cocos_target} )
258- endfunction ()
259-
260267# set Xcode property for application, include all depend target
261268macro (cocos_config_app_xcode_property cocos_app)
262269 set (depend_libs)
@@ -271,7 +278,6 @@ endmacro()
271278# custom Xcode property for iOS target
272279macro (cocos_config_target_xcode_property cocos_target)
273280 if (IOS)
274- set_xcode_property(${cocos_target} IPHONEOS_DEPLOYMENT_TARGET "8.0" )
275281 set_xcode_property(${cocos_target} ENABLE_BITCODE "NO" )
276282 set_xcode_property(${cocos_target} ONLY_ACTIVE_ARCH "YES" )
277283 endif ()
@@ -368,4 +374,3 @@ function(cocos_use_pkg target pkg)
368374 endif ()
369375
370376endfunction ()
371-
0 commit comments