mirror of https://github.com/axmolengine/axmol.git
Merge pull request #10223 from vovkasm/cmake-msvc-fixes-core
Cmake build system fixes for MSVC (partial)
This commit is contained in:
commit
ee2781e6a6
|
@ -29,6 +29,12 @@ cmake_minimum_required(VERSION 2.8)
|
||||||
# also from cmake's Modules dir, to not clash with per-project files.
|
# also from cmake's Modules dir, to not clash with per-project files.
|
||||||
cmake_policy(SET CMP0017 NEW)
|
cmake_policy(SET CMP0017 NEW)
|
||||||
|
|
||||||
|
# Use new behaviour with cmake >= 3.0:
|
||||||
|
# Only interpret if() arguments as variables or keywords when unquoted.
|
||||||
|
if(CMAKE_VERSION VERSION_GREATER 3)
|
||||||
|
cmake_policy(SET CMP0054 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
project (Cocos2d-X)
|
project (Cocos2d-X)
|
||||||
|
|
||||||
# The version number
|
# The version number
|
||||||
|
@ -49,6 +55,16 @@ if(MINGW)
|
||||||
set(USE_PREBUILT_LIBS_DEFAULT OFF)
|
set(USE_PREBUILT_LIBS_DEFAULT OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(BUILD_CPP_TESTS_DEFAULT ON)
|
||||||
|
set(BUILD_LUA_LIBS_DEFAULT ON)
|
||||||
|
set(BUILD_LUA_TESTS_DEFAULT ON)
|
||||||
|
# TODO: fix test samples for MSVC
|
||||||
|
if(MSVC)
|
||||||
|
set(BUILD_CPP_TESTS_DEFAULT OFF)
|
||||||
|
set(BUILD_LUA_LIBS_DEFAULT OFF)
|
||||||
|
set(BUILD_LUA_TESTS_DEFAULT OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
option(USE_CHIPMUNK "Use chipmunk for physics library" ON)
|
option(USE_CHIPMUNK "Use chipmunk for physics library" ON)
|
||||||
option(USE_BOX2D "Use box2d for physics library" OFF)
|
option(USE_BOX2D "Use box2d for physics library" OFF)
|
||||||
option(USE_WEBP "Use WebP codec" ${USE_WEBP_DEFAULT})
|
option(USE_WEBP "Use WebP codec" ${USE_WEBP_DEFAULT})
|
||||||
|
@ -58,9 +74,9 @@ option(BUILD_EXTENSIONS "Build extension library" ON)
|
||||||
option(BUILD_EDITOR_SPINE "Build editor support for spine" ON)
|
option(BUILD_EDITOR_SPINE "Build editor support for spine" ON)
|
||||||
option(BUILD_EDITOR_COCOSTUDIO "Build editor support for cocostudio" ON)
|
option(BUILD_EDITOR_COCOSTUDIO "Build editor support for cocostudio" ON)
|
||||||
option(BUILD_EDITOR_COCOSBUILDER "Build editor support for cocosbuilder" ON)
|
option(BUILD_EDITOR_COCOSBUILDER "Build editor support for cocosbuilder" ON)
|
||||||
option(BUILD_CPP_TESTS "Build TestCpp samples" ON)
|
option(BUILD_CPP_TESTS "Build TestCpp samples" ${BUILD_CPP_TESTS_DEFAULT})
|
||||||
option(BUILD_LUA_LIBS "Build lua libraries" ON)
|
option(BUILD_LUA_LIBS "Build lua libraries" ${BUILD_LUA_LIBS_DEFAULT})
|
||||||
option(BUILD_LUA_TESTS "Build TestLua samples" ON)
|
option(BUILD_LUA_TESTS "Build TestLua samples" ${BUILD_LUA_TESTS_DEFAULT})
|
||||||
option(USE_PREBUILT_LIBS "Use prebuilt libraries in external directory" ${USE_PREBUILT_LIBS_DEFAULT})
|
option(USE_PREBUILT_LIBS "Use prebuilt libraries in external directory" ${USE_PREBUILT_LIBS_DEFAULT})
|
||||||
|
|
||||||
if(USE_PREBUILT_LIBS AND MINGW)
|
if(USE_PREBUILT_LIBS AND MINGW)
|
||||||
|
@ -81,6 +97,14 @@ if(MSVC)
|
||||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS
|
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS
|
||||||
-wd4251 -wd4244 -wd4334 -wd4005 -wd4820 -wd4710
|
-wd4251 -wd4244 -wd4334 -wd4005 -wd4820 -wd4710
|
||||||
-wd4514 -wd4056 -wd4996 -wd4099)
|
-wd4514 -wd4056 -wd4996 -wd4099)
|
||||||
|
|
||||||
|
# Use inline debug info (/Z7) format. Or internal error may occur.
|
||||||
|
# Errors looks like: "xmemory0(592): error C3130: Internal Compiler Error: failed to write injected code block to PDB"
|
||||||
|
foreach(lang C CXX)
|
||||||
|
string(REGEX REPLACE "/Z[iI7]" "" CMAKE_${lang}_FLAGS_DEBUG "${CMAKE_${lang}_FLAGS_DEBUG}")
|
||||||
|
set(CMAKE_${lang}_FLAGS_DEBUG "${CMAKE_${lang}_FLAGS_DEBUG} /Z7")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
else()
|
else()
|
||||||
set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1")
|
set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
||||||
|
@ -150,12 +174,14 @@ if(USE_PREBUILT_LIBS)
|
||||||
include(CocosUsePrebuiltLibs)
|
include(CocosUsePrebuiltLibs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# GLFW3 used on Mac, Windows and Linux desktop platforms
|
# desktop platforms
|
||||||
if(LINUX OR MACOSX OR WINDOWS)
|
if(LINUX OR MACOSX OR WINDOWS)
|
||||||
cocos_find_package(OpenGL OPENGL REQUIRED)
|
cocos_find_package(OpenGL OPENGL REQUIRED)
|
||||||
|
|
||||||
if(LINUX OR WINDOWS)
|
if(LINUX OR WINDOWS)
|
||||||
cocos_find_package(GLEW GLEW REQUIRED)
|
cocos_find_package(GLEW GLEW REQUIRED)
|
||||||
|
#TODO: implement correct schema for pass cocos2d specific requirements to projects
|
||||||
|
include_directories(${GLEW_INCLUDE_DIRS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
cocos_find_package(GLFW3 GLFW3 REQUIRED)
|
cocos_find_package(GLFW3 GLFW3 REQUIRED)
|
||||||
|
@ -236,9 +262,11 @@ cocos_find_package(ZLIB ZLIB REQUIRED)
|
||||||
# moreover our embedded version modified to quick provide
|
# moreover our embedded version modified to quick provide
|
||||||
# functionality needed by cocos.
|
# functionality needed by cocos.
|
||||||
if(USE_PREBUILT_LIBS OR NOT MINGW)
|
if(USE_PREBUILT_LIBS OR NOT MINGW)
|
||||||
|
#TODO: hack! should be in external/unzip/CMakeLists.txt
|
||||||
|
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||||
add_subdirectory(external/unzip)
|
add_subdirectory(external/unzip)
|
||||||
set(MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/unzip)
|
set(MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/unzip ${ZLIB_INCLUDE_DIRS})
|
||||||
set(MINIZIP_LIBRARIES unzip)
|
set(MINIZIP_LIBRARIES unzip ${ZLIB_LIBRARIES})
|
||||||
message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}")
|
message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}")
|
||||||
else()
|
else()
|
||||||
cocos_find_package(MINIZIP MINIZIP REQUIRED)
|
cocos_find_package(MINIZIP MINIZIP REQUIRED)
|
||||||
|
@ -261,10 +289,10 @@ set(FLATBUFFERS_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external)
|
||||||
message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
|
message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
|
||||||
|
|
||||||
|
|
||||||
# build for 3rd party libraries
|
# build xxhash
|
||||||
if(LINUX OR APPLE)
|
|
||||||
add_subdirectory(external/xxhash)
|
add_subdirectory(external/xxhash)
|
||||||
endif()
|
set(XXHASH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
|
||||||
|
set(XXHASH_LIBRARIES xxhash)
|
||||||
|
|
||||||
# libcocos2d.a
|
# libcocos2d.a
|
||||||
add_subdirectory(cocos)
|
add_subdirectory(cocos)
|
||||||
|
|
|
@ -36,7 +36,7 @@ set(_sqlite3_inc sqlite3.h)
|
||||||
set(_sqlite3_libs sqlite3)
|
set(_sqlite3_libs sqlite3)
|
||||||
|
|
||||||
set(_gles_prefix GLEW)
|
set(_gles_prefix GLEW)
|
||||||
set(_gles_inc glew.h)
|
set(_gles_inc GL/glew.h)
|
||||||
set(_gles_inc_paths OGLES)
|
set(_gles_inc_paths OGLES)
|
||||||
set(_gles_libs glew32)
|
set(_gles_libs glew32)
|
||||||
|
|
||||||
|
|
|
@ -79,9 +79,7 @@ set(COCOS_SRC cocos2d.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
#todo: provide prebuild versions of the xx libs for all platforms
|
#todo: provide prebuild versions of the xx libs for all platforms
|
||||||
include_directories(
|
include_directories(../external/xxtea)
|
||||||
../external/xxhash
|
|
||||||
../external/xxtea)
|
|
||||||
|
|
||||||
|
|
||||||
add_library(cocos2d ${COCOS_SRC})
|
add_library(cocos2d ${COCOS_SRC})
|
||||||
|
@ -127,11 +125,11 @@ else()
|
||||||
message( FATAL_ERROR "Unsupported platform, CMake will exit" )
|
message( FATAL_ERROR "Unsupported platform, CMake will exit" )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
foreach(pkg ZLIB MINIZIP JPEG PNG TIFF TinyXML2 FREETYPE WEBSOCKETS CURL FLATBUFFERS)
|
foreach(pkg ZLIB MINIZIP JPEG PNG TIFF TinyXML2 FREETYPE WEBSOCKETS CURL FLATBUFFERS XXHASH)
|
||||||
cocos_use_pkg(cocos2d ${pkg})
|
cocos_use_pkg(cocos2d ${pkg})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
target_link_libraries(cocos2d xxhash ${PLATFORM_SPECIFIC_LIBS})
|
target_link_libraries(cocos2d ${PLATFORM_SPECIFIC_LIBS})
|
||||||
|
|
||||||
if(USE_WEBP)
|
if(USE_WEBP)
|
||||||
add_definitions(-DCC_USE_WEBP=1)
|
add_definitions(-DCC_USE_WEBP=1)
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
set(cocos_root ${Cocos2d-X_SOURCE_DIR})
|
set(cocos_root ${Cocos2d-X_SOURCE_DIR})
|
||||||
|
|
||||||
if(WINDOWS)
|
|
||||||
add_definitions(-DLUASOCKET_INET_ATON -DLUASOCKET_INET_PTON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
${cocos_root}/external/lua/tolua
|
${cocos_root}/external/lua/tolua
|
||||||
${cocos_root}/external/lua/lua
|
${cocos_root}/external/lua/lua
|
||||||
|
@ -53,6 +49,10 @@ list(APPEND lua_cocos2d_source_files
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WINDOWS)
|
if(WINDOWS)
|
||||||
|
if(MINGW)
|
||||||
|
add_definitions(-DLUASOCKET_INET_ATON -DLUASOCKET_INET_PTON)
|
||||||
|
endif()
|
||||||
|
add_definitions(-DWIN32 -D_WINDOWS)
|
||||||
list(APPEND lua_cocos2d_source_files
|
list(APPEND lua_cocos2d_source_files
|
||||||
${cocos_root}/external/lua/luasocket/wsocket.c
|
${cocos_root}/external/lua/luasocket/wsocket.c
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
set(APP_NAME cpp-tests)
|
set(APP_NAME cpp-tests)
|
||||||
|
|
||||||
|
# Use same method as in cocos library
|
||||||
|
cocos_find_package(CURL CURL REQUIRED)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(PLATFORM_SRC proj.win32/main.cpp)
|
set(PLATFORM_SRC proj.win32/main.cpp)
|
||||||
set(RES_PREFIX "")
|
set(RES_PREFIX "")
|
||||||
|
@ -252,6 +255,8 @@ target_link_libraries(${APP_NAME}
|
||||||
cocos2d
|
cocos2d
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cocos_use_pkg(${APP_NAME} CURL)
|
||||||
|
|
||||||
if(MACOSX OR APPLE)
|
if(MACOSX OR APPLE)
|
||||||
set_target_properties(${APP_NAME} PROPERTIES
|
set_target_properties(${APP_NAME} PROPERTIES
|
||||||
MACOSX_BUNDLE 1
|
MACOSX_BUNDLE 1
|
||||||
|
|
Loading…
Reference in New Issue