From 722a4d264e7418a1d213f23aab22bfd2f784d4f5 Mon Sep 17 00:00:00 2001 From: AlexV Date: Sun, 4 May 2014 15:02:00 +0900 Subject: [PATCH] basic fixes for win32 builds --- templates/cpp-template-default/CMakeLists.txt | 142 +++++++++++++++--- 1 file changed, 122 insertions(+), 20 deletions(-) diff --git a/templates/cpp-template-default/CMakeLists.txt b/templates/cpp-template-default/CMakeLists.txt index 9246c8519e..7234080c3d 100644 --- a/templates/cpp-template-default/CMakeLists.txt +++ b/templates/cpp-template-default/CMakeLists.txt @@ -15,18 +15,34 @@ else(DEBUG_MODE) set(CMAKE_BUILD_TYPE RELEASE) endif(DEBUG_MODE) -set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1") -set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) +if (MSVC) + set(CMAKE_C_FLAGS_DEBUG "-DCOCOS2D_DEBUG=1") + set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS") + +elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1") + set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +endif() if(USE_CHIPMUNK) message("Using chipmunk ...") - add_definitions(-DLINUX -DCC_ENABLE_CHIPMUNK_INTEGRATION=1) + add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=1) + if(UNIX) # assuming linux + add_definitions(-DLINUX ) + endif() elseif(USE_BOX2D) message("Using box2d ...") - add_definitions(-DLINUX -DCC_ENABLE_BOX2D_INTEGRATION=1) + add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1) + if(UNIX) # assuming linux + add_definitions(-DLINUX ) + endif() else(USE_CHIPMUNK) message(FATAL_ERROR "Must choose a physics library.") endif(USE_CHIPMUNK) @@ -38,15 +54,77 @@ else() set(ARCH_DIR "32-bit") endif() - +if( UNIX ) #assume linux set(GAME_SRC proj.linux/main.cpp Classes/AppDelegate.cpp Classes/HelloWorldScene.cpp ) +elseif ( WIN32 ) +set(GAME_SRC + proj.win32/main.cpp + proj.win32/main.h + proj.win32/resource.h + Classes/AppDelegate.cpp + Classes/HelloWorldScene.cpp +) +endif() set(COCOS2D_ROOT ${CMAKE_SOURCE_DIR}/cocos2d) +if (WIN32) +include_directories( + ${COCOS2D_ROOT} + ${COCOS2D_ROOT}/cocos + ${COCOS2D_ROOT}/cocos/audio/include + ${COCOS2D_ROOT}/cocos/2d + ${COCOS2D_ROOT}/cocos/2d/renderer + ${COCOS2D_ROOT}/cocos/2d/platform + ${COCOS2D_ROOT}/cocos/2d/platform/desktop + ${COCOS2D_ROOT}/cocos/2d/platform/win32 + ${COCOS2D_ROOT}/cocos/base + ${COCOS2D_ROOT}/cocos/deprecated + ${COCOS2D_ROOT}/cocos/physics + ${COCOS2D_ROOT}/cocos/editor-support + ${COCOS2D_ROOT}/cocos/math + ${COCOS2D_ROOT}/extensions + ${COCOS2D_ROOT}/external + ${COCOS2D_ROOT}/external/edtaa3func + ${COCOS2D_ROOT}/external/jpeg/include/win32 + ${COCOS2D_ROOT}/external/png/include/win32 + ${COCOS2D_ROOT}/external/tiff/include/win32 + ${COCOS2D_ROOT}/external/webp/include/win32 + ${COCOS2D_ROOT}/external/curl/include/win32 + ${COCOS2D_ROOT}/external/tinyxml2 + ${COCOS2D_ROOT}/external/unzip + ${COCOS2D_ROOT}/external/sqlite3/include + ${COCOS2D_ROOT}/external/chipmunk/include/chipmunk + ${COCOS2D_ROOT}/external/freetype2/include/win32 + ${COCOS2D_ROOT}/external/websockets/include/win32 + ${COCOS2D_ROOT}/external/spidermonkey/include/win32 + ${COCOS2D_ROOT}/external/glfw3/include/win32 + ${COCOS2D_ROOT}/external/win32-specific/gles/include/OGLES + ${COCOS2D_ROOT}/external/win32-specific/icon/include + ${COCOS2D_ROOT}/external/win32-specific/zlib/include + ${COCOS2D_ROOT}/external/xxhash +) +link_directories( + /usr/local/lib + ${COCOS2D_ROOT}/external/png/prebuilt/win32 + ${COCOS2D_ROOT}/external/jpeg/prebuilt/win32 + ${COCOS2D_ROOT}/external/tiff/prebuilt/win32 + ${COCOS2D_ROOT}/external/glfw3/prebuilt/win32 + ${COCOS2D_ROOT}/external/webp/prebuilt/win32 + ${COCOS2D_ROOT}/external/curl/prebuilt/win32 + ${COCOS2D_ROOT}/external/sqlite3/libraries/win32 + ${COCOS2D_ROOT}/external/freetype2/prebuilt/win32 + ${COCOS2D_ROOT}/external/websockets/prebuilt/win32 + ${COCOS2D_ROOT}/external/spidermonkey/prebuilt/win32 + ${COCOS2D_ROOT}/external/win32-specific/gles/prebuilt + ${COCOS2D_ROOT}/external/win32-specific/icon/prebuilt + ${COCOS2D_ROOT}/external/win32-specific/zlib/prebuilt +) +elseif(UNIX) #assumed linux include_directories( /usr/local/include/GLFW ${COCOS2D_ROOT} @@ -64,7 +142,6 @@ include_directories( ${COCOS2D_ROOT}/external/webp/include/linux ${COCOS2D_ROOT}/external/tinyxml2 ${COCOS2D_ROOT}/external/unzip - ${COCOS2D_ROOT}/external/chipmunk/include/chipmunk ${COCOS2D_ROOT}/external/freetype2/include/linux ${COCOS2D_ROOT}/external/websockets/include/linux ${COCOS2D_ROOT}/external/spidermonkey/include/linux @@ -82,12 +159,19 @@ link_directories( ${COCOS2D_ROOT}/external/spidermonkey/prebuilt/linux/${ARCH_DIR} ${COCOS2D_ROOT}/external/linux-specific/fmod/prebuilt/${ARCH_DIR} ) +endif() -# chipmunk library -add_subdirectory(${COCOS2D_ROOT}/external/chipmunk/src) +if(USE_CHIPMUNK) -# box2d library -add_subdirectory(${COCOS2D_ROOT}/external/Box2D) + include_directories(${COCOS2D_ROOT}/external/chipmunk/include/chipmunk) + # chipmunk library + add_subdirectory(${COCOS2D_ROOT}/external/chipmunk/src) +endif() + +if(USE_BOX2D) + # box2d library + add_subdirectory(${COCOS2D_ROOT}/external/Box2D) +endif() # unzip library add_subdirectory(${COCOS2D_ROOT}/external/unzip) @@ -118,10 +202,18 @@ add_subdirectory(${COCOS2D_ROOT}/cocos/editor-support/cocosbuilder) # cocostudio add_subdirectory(${COCOS2D_ROOT}/cocos/editor-support/cocostudio) -# add the executable -add_executable(${APP_NAME} - ${GAME_SRC} -) +if ( WIN32 ) + # add the executable + add_executable(${APP_NAME} + WIN32 + ${GAME_SRC} + ) +else() + # add the executable + add_executable(${APP_NAME} + ${GAME_SRC} + ) +endif() if ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) set(FMOD_LIB "fmodex64") @@ -143,8 +235,18 @@ set(APP_BIN_DIR "${CMAKE_BINARY_DIR}/bin") set_target_properties(${APP_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${APP_BIN_DIR}") -pre_build(${APP_NAME} - COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources - ) +if ( WIN32 ) + #also copying dlls to binary directory for the executable to run + pre_build(${APP_NAME} + COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources + COMMAND ${CMAKE_COMMAND} -E copy ${COCOS2D_ROOT}/external/win32-specific/gles/prebuilt/glew32.dll ${APP_BIN_DIR}/${CMAKE_BUILD_TYPE} + COMMAND ${CMAKE_COMMAND} -E copy ${COCOS2D_ROOT}/external/win32-specific/zlib/prebuilt/zlib1.dll ${APP_BIN_DIR}/${CMAKE_BUILD_TYPE} + ) +else() + pre_build(${APP_NAME} + COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources + ) +endif() \ No newline at end of file