소스 검색

Added mklink support for VS generator, enable by specifying '-DUSE_MKLINK=1'

Wei Tjong Yao 12 년 전
부모
커밋
83302c3de4
2개의 변경된 파일15개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 0
      Source/Engine/CMakeLists.txt
  2. 12 4
      Source/cmake/Modules/Urho3D-CMake-magic.cmake

+ 3 - 0
Source/Engine/CMakeLists.txt

@@ -52,6 +52,9 @@ foreach (TARGET ${STATIC_LIBRARY_TARGETS})
     set (INT_DIR ${INT_DIR}/CMakeFiles/${TARGET}.dir)
     if (MSVC)
         string (REPLACE /$(Configuration) "" INT_DIR ${INT_DIR})
+        if (USE_MKLINK)
+            string (REGEX REPLACE \\.dir$ .lnk INT_DIR ${INT_DIR})
+        endif ()
     elseif (XCODE)
         string (REPLACE /$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) "" INT_DIR ${INT_DIR})
         string (REGEX REPLACE \\.dir$ .lnk INT_DIR ${INT_DIR})

+ 12 - 4
Source/cmake/Modules/Urho3D-CMake-magic.cmake

@@ -281,10 +281,18 @@ macro (setup_library)
 
         if (MSVC)
             # Specific to VS generator
-            file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.dir)
-            add_custom_command (TARGET ${TARGET_NAME} PRE_LINK
-                COMMAND copy /B \"$(ProjectDir)$(IntDir)*.obj\" \"$(ProjectDir)CMakeFiles\\${TARGET_NAME}.dir\"
-                COMMENT "Copying object files to a common location also used by Makefile generator")
+            if (USE_MKLINK)
+                set (SYMLINK ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.lnk)
+                add_custom_command (TARGET ${TARGET_NAME} PRE_LINK
+                    COMMAND rd \"${SYMLINK}\"
+					COMMAND mklink /D \"${SYMLINK}\" \"$(ProjectDir)$(IntDir)\"
+                    COMMENT "Creating a symbolic link pointing to object file directory")
+            else ()
+                file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.dir)
+                add_custom_command (TARGET ${TARGET_NAME} PRE_LINK
+                    COMMAND copy /B \"$(ProjectDir)$(IntDir)*.obj\" \"$(ProjectDir)CMakeFiles\\${TARGET_NAME}.dir\"
+                    COMMENT "Copying object files to a common location also used by Makefile generator")
+            endif ()
         elseif (XCODE)
             # Specific to Xcode generator
             set (SYMLINK ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.lnk)