Browse Source

Fixed Win64 build. Enhanced cmake_vs20xx.bat to accept extra command line arguments, such as ENABLE_64BIT, ENABLE_LUA, or ENABLE_EXTRAS.

Wei Tjong Yao 12 years ago
parent
commit
56e60a59d8
7 changed files with 45 additions and 23 deletions
  1. 3 0
      CMakeLists.txt
  2. 1 1
      Docs/GettingStarted.dox
  3. 16 15
      Extras/LuaScript/CMakeLists.txt
  4. 1 1
      Readme.txt
  5. 8 2
      cmake_vs2008.bat
  6. 8 2
      cmake_vs2010.bat
  7. 8 2
      cmake_vs2012.bat

+ 3 - 0
CMakeLists.txt

@@ -85,6 +85,9 @@ elseif (CMAKE_GENERATOR STREQUAL "Xcode")
 endif ()
 endif ()
 if (MSVC)
 if (MSVC)
     # Visual Studio-specific setup
     # Visual Studio-specific setup
+    if (ENABLE_64BIT)
+        enable_language (ASM_MASM)
+    endif ()
     add_definitions (-D_CRT_SECURE_NO_WARNINGS)
     add_definitions (-D_CRT_SECURE_NO_WARNINGS)
     set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
     set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
     set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /MT /fp:fast /Zi /GS-")
     set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /MT /fp:fast /Zi /GS-")

+ 1 - 1
Docs/GettingStarted.dox

@@ -80,7 +80,7 @@ To run from Xcode on iPhone/iPad Simulator, edit the Product Scheme to set "Run"
 
 
 \section Building_64bit Desktop 64bit build
 \section Building_64bit Desktop 64bit build
 
 
-Currently CMake build configuration has been set to compile Urho3D as 32bit by default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat by passing the option "Win64" explicitly. This overrides CMake to use a 64bit solution generator.
+Currently CMake build configuration has been set to compile Urho3D as 32bit by default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat by passing the option "ENABLE_64BIT" explicitly. This overrides CMake to use a 64bit solution generator.
 
 
 To enable 64bit build for non-MSVC/non-Windows platform, pass the option "-DENABLE_64BIT=1" explicitly when invoking cmake_eclipse.sh/cmake_macosx.sh/cmake_gcc.sh. Alternatively, you can modify the main CMakeLists.txt to enable 64bit by default for non-MSVC/non-Windows platform.
 To enable 64bit build for non-MSVC/non-Windows platform, pass the option "-DENABLE_64BIT=1" explicitly when invoking cmake_eclipse.sh/cmake_macosx.sh/cmake_gcc.sh. Alternatively, you can modify the main CMakeLists.txt to enable 64bit by default for non-MSVC/non-Windows platform.
 
 

+ 16 - 15
Extras/LuaScript/CMakeLists.txt

@@ -8,24 +8,25 @@ set (SOURCE_FILES ${CPP_FILES} ${H_FILES})
 
 
 # Define generated source files
 # Define generated source files
 file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated)
 file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated)
+file (GLOB_RECURSE PKG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/*.pkg)
 add_custom_command (OUTPUT generated/AudioLuaAPI.cpp generated/ContainerLuaAPI.cpp generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp
 add_custom_command (OUTPUT generated/AudioLuaAPI.cpp generated/ContainerLuaAPI.cpp generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp
     generated/InputLuaAPI.cpp generated/IOLuaAPI.cpp generated/MathLuaAPI.cpp generated/NavigationLuaAPI.cpp generated/NetworkLuaAPI.cpp
     generated/InputLuaAPI.cpp generated/IOLuaAPI.cpp generated/MathLuaAPI.cpp generated/NavigationLuaAPI.cpp generated/NetworkLuaAPI.cpp
     generated/PhysicsLuaAPI.cpp generated/ResourceLuaAPI.cpp generated/SceneLuaAPI.cpp generated/UILuaAPI.cpp generated/LuaScriptLuaAPI.cpp 
     generated/PhysicsLuaAPI.cpp generated/ResourceLuaAPI.cpp generated/SceneLuaAPI.cpp generated/UILuaAPI.cpp generated/LuaScriptLuaAPI.cpp 
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/AudioLuaAPI.cpp AudioLuaAPI.pkg DEPENDS pkgs/AudioLuaAPI.pkg pkgs/Audio/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ContainerLuaAPI.cpp ContainerLuaAPI.pkg DEPENDS pkgs/ContainerLuaAPI.pkg pkgs/Container/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/CoreLuaAPI.cpp CoreLuaAPI.pkg DEPENDS pkgs/CoreLuaAPI.pkg pkgs/Core/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/EngineLuaAPI.cpp EngineLuaAPI.pkg DEPENDS pkgs/EngineLuaAPI.pkg pkgs/Engine/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/GraphicsLuaAPI.cpp GraphicsLuaAPI.pkg DEPENDS pkgs/GraphicsLuaAPI.pkg pkgs/Graphics/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/InputLuaAPI.cpp InputLuaAPI.pkg DEPENDS pkgs/InputLuaAPI.pkg pkgs/Input/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/IOLuaAPI.cpp IOLuaAPI.pkg DEPENDS pkgs/IOLuaAPI.pkg pkgs/IO/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/MathLuaAPI.cpp MathLuaAPI.pkg DEPENDS pkgs/MathLuaAPI.pkg pkgs/Math/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NavigationLuaAPI.cpp NavigationLuaAPI.pkg DEPENDS pkgs/NavigationLuaAPI.pkg pkgs/Navigation/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NetworkLuaAPI.cpp NetworkLuaAPI.pkg DEPENDS pkgs/NetworkLuaAPI.pkg pkgs/Network/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/PhysicsLuaAPI.cpp PhysicsLuaAPI.pkg DEPENDS pkgs/PhysicsLuaAPI.pkg pkgs/Physics/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ResourceLuaAPI.cpp ResourceLuaAPI.pkg DEPENDS pkgs/ResourceLuaAPI.pkg pkgs/Resource/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/SceneLuaAPI.cpp SceneLuaAPI.pkg DEPENDS pkgs/SceneLuaAPI.pkg pkgs/Scene/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/UILuaAPI.cpp UILuaAPI.pkg DEPENDS pkgs/UILuaAPI.pkg pkgs/UI/*.pkg
-    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/LuaScriptLuaAPI.cpp LuaScriptLuaAPI.pkg DEPENDS pkgs/LuaScriptLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/AudioLuaAPI.cpp AudioLuaAPI.pkg DEPENDS ${PKG_FILES}
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ContainerLuaAPI.cpp ContainerLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/CoreLuaAPI.cpp CoreLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/EngineLuaAPI.cpp EngineLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/GraphicsLuaAPI.cpp GraphicsLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/InputLuaAPI.cpp InputLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/IOLuaAPI.cpp IOLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/MathLuaAPI.cpp MathLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NavigationLuaAPI.cpp NavigationLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/NetworkLuaAPI.cpp NetworkLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/PhysicsLuaAPI.cpp PhysicsLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/ResourceLuaAPI.cpp ResourceLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/SceneLuaAPI.cpp SceneLuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/UILuaAPI.cpp UILuaAPI.pkg
+    COMMAND ${PROJECT_SOURCE_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/generated/LuaScriptLuaAPI.cpp LuaScriptLuaAPI.pkg
     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pkgs
     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pkgs
     COMMENT "Generate Lua API binding on the fly")
     COMMENT "Generate Lua API binding on the fly")
 set (SOURCE_FILES ${SOURCE_FILES} generated/AudioLuaAPI.cpp generated/ContainerLuaAPI generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp
 set (SOURCE_FILES ${SOURCE_FILES} generated/AudioLuaAPI.cpp generated/ContainerLuaAPI generated/CoreLuaAPI.cpp generated/EngineLuaAPI.cpp generated/GraphicsLuaAPI.cpp

+ 1 - 1
Readme.txt

@@ -247,7 +247,7 @@ Desktop 64bit build
 
 
 Currently CMake build configuration has been set to compile Urho3D as 32bit by
 Currently CMake build configuration has been set to compile Urho3D as 32bit by
 default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat
 default. To enable 64bit build for Visual Studio, run one of the cmake_vs20xx.bat
-by passing the option "Win64" explicitly. This overrides CMake to use a 64bit
+by passing the option "ENABLE_64BIT" explicitly. This overrides CMake to use a 64bit
 solution generator.
 solution generator.
 
 
 To enable 64bit build for non-MSVC/non-Windows platform, pass the
 To enable 64bit build for non-MSVC/non-Windows platform, pass the

+ 8 - 2
cmake_vs2008.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 9 2008%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 9 2008%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof

+ 8 - 2
cmake_vs2010.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 10%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 10%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof

+ 8 - 2
cmake_vs2012.bat

@@ -1,3 +1,9 @@
 @del /F CMakeCache.txt
 @del /F CMakeCache.txt
-@if "%1" == "Win64" (set "arch= %1") else (set "arch=")
-cmake -G "Visual Studio 11%arch%"
+@if /I "%1" == "ENABLE_64BIT" (set "arch= Win64") else (set "arch=")
+@set "DEFINE="
+@for %%n in (%*) do @call :concat %%n
+cmake -G "Visual Studio 11%arch%" %DEFINE%
+@goto :eof
+:concat
+@set "DEFINE=%DEFINE% -D%1=1"
+@goto :eof