Ver código fonte

Avoid hardcoding Lua API pkg names and at the same time improve build performance by having more granular dependency list.

Wei Tjong Yao 12 anos atrás
pai
commit
bb2205e690
1 arquivos alterados com 13 adições e 24 exclusões
  1. 13 24
      Source/Extras/LuaScript/CMakeLists.txt

+ 13 - 24
Source/Extras/LuaScript/CMakeLists.txt

@@ -30,30 +30,19 @@ 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
-    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 
-    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
-    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
-    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)
+file (GLOB API_PKG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/*.pkg)
+foreach (API_PKG_FILE ${API_PKG_FILES})
+    get_filename_component (NAME ${API_PKG_FILE} NAME)
+    string (REGEX REPLACE LuaAPI.pkg$ "" API ${NAME})
+    set (GEN_CPP_FILE generated/${API}LuaAPI.cpp)
+    set (GEN_CPP_FILES ${GEN_CPP_FILES} ${GEN_CPP_FILE})
+    file (GLOB PKG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgs/${API}/*.pkg)
+    add_custom_command (OUTPUT ${GEN_CPP_FILE} 
+        COMMAND ${PROJECT_ROOT_DIR}/Bin/tolua++ -L basic.lua -o ${CMAKE_CURRENT_BINARY_DIR}/${GEN_CPP_FILE} ${NAME} DEPENDS ${API_PKG_FILE} ${PKG_FILES}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pkgs
+        COMMENT "Generating tolua++ API binding on the fly for ${API}")
+endforeach ()
+set (SOURCE_FILES ${SOURCE_FILES} ${GEN_CPP_FILES})
 
 
 # Define dependency libs
 # Define dependency libs
 set (LIBS ../../Engine/Audio ../../Engine/Container ../../Engine/Core ../../Engine/Engine ../../Engine/Graphics ../../Engine/Input ../../Engine/IO ../../Engine/Math ../../Engine/Navigation ../../Engine/Network
 set (LIBS ../../Engine/Audio ../../Engine/Container ../../Engine/Core ../../Engine/Engine ../../Engine/Graphics ../../Engine/Input ../../Engine/IO ../../Engine/Math ../../Engine/Navigation ../../Engine/Network