|
22 | 22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
23 | 23 | # THE SOFTWARE. |
24 | 24 | # ****************************************************************************/ |
25 | | -cmake_policy(SET CMP0017 NEW) |
26 | 25 |
|
27 | | -cmake_minimum_required(VERSION 3.1) |
| 26 | +cmake_minimum_required(VERSION 3.6) |
28 | 27 |
|
29 | 28 | set(APP_NAME MyGame) |
30 | | -project (${APP_NAME}) |
31 | 29 |
|
32 | | -set(COCOS2D_ROOT ${CMAKE_SOURCE_DIR}/cocos2d) |
| 30 | +project(${APP_NAME}) |
33 | 31 |
|
34 | | -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${COCOS2D_ROOT}/cmake/Modules/") |
35 | | -include(CocosBuildHelpers) |
| 32 | +set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cocos2d) |
| 33 | +set(CMAKE_MODULE_PATH ${COCOS2DX_ROOT_PATH}/cmake/Modules/) |
36 | 34 |
|
| 35 | +include(CocosBuildSet) |
| 36 | +add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos ${ENGINE_BINARY_PATH}/cocos/core) |
37 | 37 |
|
38 | | -# Some macro definitions |
39 | | -if(WINDOWS) |
40 | | - if(BUILD_SHARED_LIBS) |
41 | | - ADD_DEFINITIONS (-D_USRDLL -D_EXPORT_DLL_ -D_USEGUIDLL -D_USREXDLL -D_USRSTUDIODLL) |
42 | | - else() |
43 | | - ADD_DEFINITIONS (-DCC_STATIC) |
44 | | - endif() |
| 38 | +# record sources, headers, resources... |
| 39 | +set(GAME_SOURCE) |
| 40 | +set(GAME_HEADER) |
45 | 41 |
|
46 | | - ADD_DEFINITIONS (-DCOCOS2DXWIN32_EXPORTS -D_WINDOWS -DWIN32 -D_WIN32) |
47 | | - set(PLATFORM_FOLDER win32) |
48 | | -elseif(MACOSX OR APPLE) |
49 | | - ADD_DEFINITIONS (-DCC_TARGET_OS_MAC) |
50 | | - ADD_DEFINITIONS (-DUSE_FILE32API) |
51 | | - set(PLATFORM_FOLDER mac) |
52 | | -elseif(LINUX) |
53 | | - ADD_DEFINITIONS(-DLINUX) |
54 | | - set(PLATFORM_FOLDER linux) |
55 | | -elseif(ANDROID) |
56 | | - ADD_DEFINITIONS (-DUSE_FILE32API) |
57 | | - set(PLATFORM_FOLDER android) |
58 | | -else() |
59 | | - message( FATAL_ERROR "Unsupported platform, CMake will exit" ) |
| 42 | +set(GAME_RES_FOLDER |
| 43 | + "${CMAKE_CURRENT_SOURCE_DIR}/Resources" |
| 44 | + ) |
| 45 | +if(APPLE OR WINDOWS) |
| 46 | + cocos_mark_multi_resources(common_res_files RES_TO "Resources" FOLDERS ${GAME_RES_FOLDER}) |
60 | 47 | endif() |
61 | 48 |
|
62 | | - |
63 | | -# Compiler options |
64 | | -if(MSVC) |
65 | | - if(CMAKE_BUILD_TYPE STREQUAL "Debug") |
66 | | - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:msvcrt /NODEFAULTLIB:libcmt") |
67 | | - else() |
68 | | - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:libcmt") |
69 | | - endif() |
70 | | - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS |
71 | | - -wd4251 -wd4244 -wd4334 -wd4005 -wd4820 -wd4710 |
72 | | - -wd4514 -wd4056 -wd4996 -wd4099) |
73 | | -else() |
74 | | - if(CMAKE_BUILD_TYPE MATCHES Debug) |
75 | | - ADD_DEFINITIONS(-DCOCOS2D_DEBUG=1) |
76 | | - endif() |
77 | | - set(CMAKE_C_FLAGS_DEBUG "-g -Wall") |
78 | | - set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) |
79 | | - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") |
80 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-deprecated-declarations -Wno-reorder") |
81 | | - if(CLANG) |
82 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") |
83 | | - endif() |
84 | | -endif(MSVC) |
85 | | - |
86 | | -set(PLATFORM_SPECIFIC_SRC) |
87 | | -set(PLATFORM_SPECIFIC_HEADERS) |
88 | | - |
89 | | -if(MACOSX OR APPLE) |
90 | | - set(PLATFORM_SPECIFIC_SRC |
91 | | - proj.ios_mac/mac/main.cpp |
92 | | - ) |
| 49 | +# add cross-platforms source files and header files |
| 50 | +list(APPEND GAME_SOURCE |
| 51 | + Classes/AppsFlyer/AppsFlyerX.cpp |
| 52 | + Classes/AppsFlyer/AppsFlyerXAndroid.cpp |
| 53 | + Classes/AppsFlyer/AppsFlyerProxyX.cpp |
| 54 | + Classes/AppDelegate.cpp |
| 55 | + Classes/HelloWorldScene.cpp |
| 56 | + ) |
| 57 | +list(APPEND GAME_HEADER |
| 58 | + Classes/AppsFlyer/AppsFlyerX.h |
| 59 | + Classes/AppsFlyer/AppsFlyerXAndroid.h |
| 60 | + Classes/AppsFlyer/AppsFlyerProxyX.h |
| 61 | + Classes/AppDelegate.h |
| 62 | + Classes/HelloWorldScene.h |
| 63 | + ) |
| 64 | + |
| 65 | +if(ANDROID) |
| 66 | + # change APP_NAME to the share library name for Android, it's value depend on AndroidManifest.xml |
| 67 | + set(APP_NAME MyGame) |
| 68 | + list(APPEND GAME_SOURCE |
| 69 | + proj.android-studio/app/jni/hellocpp/main.cpp |
| 70 | + ) |
93 | 71 | elseif(LINUX) |
94 | | - set(PLATFORM_SPECIFIC_SRC |
95 | | - proj.linux/main.cpp |
96 | | - ) |
97 | | -elseif ( WIN32 ) |
98 | | - set(PLATFORM_SPECIFIC_SRC |
99 | | - proj.win32/main.cpp |
100 | | - ) |
101 | | - set(PLATFORM_SPECIFIC_HEADERS |
102 | | - proj.win32/main.h |
103 | | - proj.win32/resource.h |
104 | | - ) |
105 | | -elseif(ANDROID) |
106 | | - set(PLATFORM_SPECIFIC_SRC |
107 | | - proj.android-studio/app/jni/hellocpp/main.cpp |
108 | | - ) |
| 72 | + list(APPEND GAME_SOURCE |
| 73 | + proj.linux/main.cpp |
| 74 | + ) |
| 75 | +elseif(WINDOWS) |
| 76 | + list(APPEND GAME_HEADER |
| 77 | + proj.win32/main.h |
| 78 | + proj.win32/resource.h |
| 79 | + ) |
| 80 | + list(APPEND GAME_SOURCE |
| 81 | + proj.win32/main.cpp |
| 82 | + proj.win32/game.rc |
| 83 | + ${common_res_files} |
| 84 | + ) |
| 85 | +elseif(APPLE) |
| 86 | + if(IOS) |
| 87 | + list(APPEND GAME_HEADER |
| 88 | + proj.ios_mac/ios/AppController.h |
| 89 | + proj.ios_mac/ios/RootViewController.h |
| 90 | + ) |
| 91 | + set(APP_UI_RES |
| 92 | + proj.ios_mac/ios/LaunchScreen.storyboard |
| 93 | + proj.ios_mac/ios/LaunchScreenBackground.png |
| 94 | + proj.ios_mac/ios/Images.xcassets |
| 95 | + ) |
| 96 | + list(APPEND GAME_SOURCE |
| 97 | + proj.ios_mac/ios/main.m |
| 98 | + proj.ios_mac/ios/AppController.mm |
| 99 | + proj.ios_mac/ios/RootViewController.mm |
| 100 | + proj.ios_mac/ios/Prefix.pch |
| 101 | + ${APP_UI_RES} |
| 102 | + ) |
| 103 | + elseif(MACOSX) |
| 104 | + set(APP_UI_RES |
| 105 | + proj.ios_mac/mac/Icon.icns |
| 106 | + proj.ios_mac/mac/Info.plist |
| 107 | + ) |
| 108 | + list(APPEND GAME_SOURCE |
| 109 | + proj.ios_mac/mac/main.cpp |
| 110 | + proj.ios_mac/mac/Prefix.pch |
| 111 | + ${APP_UI_RES} |
| 112 | + ) |
| 113 | + endif() |
| 114 | + list(APPEND GAME_SOURCE ${common_res_files}) |
109 | 115 | endif() |
110 | 116 |
|
111 | | -include_directories( |
112 | | - /usr/local/include/GLFW |
113 | | - /usr/include/GLFW |
114 | | - ${COCOS2D_ROOT} |
115 | | - ${COCOS2D_ROOT}/cocos |
116 | | - ${COCOS2D_ROOT}/external |
117 | | - ${COCOS2D_ROOT}/cocos/platform |
118 | | - ${COCOS2D_ROOT}/cocos/audio/include/ |
119 | | - Classes |
120 | | -) |
121 | | -if ( WIN32 ) |
122 | | - include_directories( |
123 | | - ${COCOS2D_ROOT}/external/glfw3/include/win32 |
124 | | - ${COCOS2D_ROOT}/external/win32-specific/gles/include/OGLES |
125 | | -) |
126 | | -endif( WIN32 ) |
127 | | - |
128 | | -set(GAME_SRC |
129 | | - Classes/AppDelegate.cpp |
130 | | - Classes/HelloWorldScene.cpp |
131 | | - ${PLATFORM_SPECIFIC_SRC} |
132 | | -) |
133 | | - |
134 | | -set(GAME_HEADERS |
135 | | - Classes/AppDelegate.h |
136 | | - Classes/HelloWorldScene.h |
137 | | - ${PLATFORM_SPECIFIC_HEADERS} |
138 | | -) |
139 | | - |
140 | | - |
141 | | -# Configure libcocos2d |
142 | | -set(BUILD_CPP_EMPTY_TEST OFF CACHE BOOL "turn off build cpp-empty-test") |
143 | | -set(BUILD_CPP_TESTS OFF CACHE BOOL "turn off build cpp-tests") |
144 | | -set(BUILD_LUA_LIBS OFF CACHE BOOL "turn off build lua related targets") |
145 | | -set(BUILD_JS_LIBS OFF CACHE BOOL "turn off build js related targets") |
146 | | -add_subdirectory(${COCOS2D_ROOT}) |
147 | | - |
148 | | - |
149 | | -# MyGame |
150 | | -if( ANDROID ) |
151 | | - add_library(${APP_NAME} SHARED ${GAME_SRC} ${GAME_HEADERS}) |
152 | | - IF(CMAKE_BUILD_TYPE MATCHES RELEASE) |
153 | | - ADD_CUSTOM_COMMAND(TARGET ${APP_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} lib${APP_NAME}.so) |
154 | | - ENDIF() |
| 117 | +# mark app complie info and libs info |
| 118 | +set(all_code_files |
| 119 | + ${GAME_HEADER} |
| 120 | + ${GAME_SOURCE} |
| 121 | + ) |
| 122 | +if(NOT ANDROID) |
| 123 | + add_executable(${APP_NAME} ${all_code_files}) |
155 | 124 | else() |
156 | | - add_executable(${APP_NAME} ${GAME_SRC} ${GAME_HEADERS}) |
| 125 | + add_library(${APP_NAME} SHARED ${all_code_files}) |
| 126 | + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) |
| 127 | + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) |
157 | 128 | endif() |
158 | 129 |
|
159 | 130 | target_link_libraries(${APP_NAME} cocos2d) |
| 131 | +target_include_directories(${APP_NAME} |
| 132 | + PRIVATE Classes |
| 133 | + PRIVATE ${COCOS2DX_ROOT_PATH}/cocos/audio/include/ |
| 134 | +) |
160 | 135 |
|
161 | | -set(APP_BIN_DIR "${CMAKE_BINARY_DIR}/bin") |
162 | | - |
163 | | -set_target_properties(${APP_NAME} PROPERTIES |
164 | | - RUNTIME_OUTPUT_DIRECTORY "${APP_BIN_DIR}") |
165 | | - |
166 | | -if ( WIN32 ) |
167 | | - #also copying dlls to binary directory for the executable to run |
168 | | - pre_build(${APP_NAME} |
169 | | - COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources |
170 | | - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources |
171 | | - COMMAND ${CMAKE_COMMAND} -E copy ${COCOS2D_ROOT}/external/win32-specific/gles/prebuilt/glew32.dll ${APP_BIN_DIR}/${CMAKE_BUILD_TYPE} |
172 | | - COMMAND ${CMAKE_COMMAND} -E copy ${COCOS2D_ROOT}/external/win32-specific/zlib/prebuilt/zlib1.dll ${APP_BIN_DIR}/${CMAKE_BUILD_TYPE} |
173 | | - ) |
174 | | -elseif( ANDROID ) |
175 | | - |
176 | | -else() |
177 | | - pre_build(${APP_NAME} |
178 | | - COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources |
179 | | - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources |
180 | | - ) |
| 136 | +# mark app resources |
| 137 | +setup_cocos_app_config(${APP_NAME}) |
| 138 | +if(APPLE) |
| 139 | + set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") |
| 140 | + if(MACOSX) |
| 141 | + set_target_properties(${APP_NAME} PROPERTIES |
| 142 | + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/proj.ios_mac/mac/Info.plist" |
| 143 | + ) |
| 144 | + elseif(IOS) |
| 145 | + cocos_pak_xcode(${APP_NAME} INFO_PLIST "iOSBundleInfo.plist.in") |
| 146 | + set_xcode_property(${APP_NAME} ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon") |
| 147 | + set_xcode_property(${APP_NAME} DEVELOPMENT_TEAM "") |
| 148 | + set_xcode_property(${APP_NAME} CODE_SIGN_IDENTITY "iPhone Developer") |
| 149 | + endif() |
| 150 | +elseif(WINDOWS) |
| 151 | + cocos_copy_target_dll(${APP_NAME}) |
| 152 | +endif() |
181 | 153 |
|
| 154 | +if(LINUX OR WINDOWS) |
| 155 | + set(APP_RES_DIR "$<TARGET_FILE_DIR:${APP_NAME}>/Resources") |
| 156 | + cocos_copy_target_res(${APP_NAME} COPY_TO ${APP_RES_DIR} FOLDERS ${GAME_RES_FOLDER}) |
182 | 157 | endif() |
0 commit comments