Просмотр исходного кода

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

Wei Tjong Yao 12 лет назад
Родитель
Сommit
bb2205e690
1 измененных файлов с 13 добавлено и 24 удалено
  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
 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
 set (LIBS ../../Engine/Audio ../../Engine/Container ../../Engine/Core ../../Engine/Engine ../../Engine/Graphics ../../Engine/Input ../../Engine/IO ../../Engine/Math ../../Engine/Navigation ../../Engine/Network