Browse Source

Use symlink to object directory instead of direct copying for Xcode.

Wei Tjong Yao 12 years ago
parent
commit
63a1dcc892
2 changed files with 5 additions and 4 deletions
  1. 2 1
      Source/Engine/CMakeLists.txt
  2. 3 3
      Source/cmake/Modules/Urho3D-CMake-magic.cmake

+ 2 - 1
Source/Engine/CMakeLists.txt

@@ -49,12 +49,13 @@ foreach (TARGET ${STATIC_LIBRARY_TARGETS})
     get_target_property (SOURCES ${TARGET} SOURCES)
     get_target_property (SOURCES ${TARGET} SOURCES)
     get_target_property (INT_DIR ${TARGET} LOCATION)
     get_target_property (INT_DIR ${TARGET} LOCATION)
     get_filename_component (INT_DIR ${INT_DIR} PATH)
     get_filename_component (INT_DIR ${INT_DIR} PATH)
+    set (INT_DIR ${INT_DIR}/CMakeFiles/${TARGET}.dir)
     if (MSVC)
     if (MSVC)
         string (REPLACE /$(Configuration) "" INT_DIR ${INT_DIR})
         string (REPLACE /$(Configuration) "" INT_DIR ${INT_DIR})
     elseif (XCODE)
     elseif (XCODE)
         string (REPLACE /$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) "" INT_DIR ${INT_DIR})
         string (REPLACE /$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) "" INT_DIR ${INT_DIR})
+        string (REGEX REPLACE \\.dir$ .lnk INT_DIR ${INT_DIR})
     endif ()
     endif ()
-    set (INT_DIR ${INT_DIR}/CMakeFiles/${TARGET}.dir)
     
     
     foreach (SOURCE ${SOURCES})
     foreach (SOURCE ${SOURCES})
         get_filename_component (NAME ${SOURCE} NAME)
         get_filename_component (NAME ${SOURCE} NAME)

+ 3 - 3
Source/cmake/Modules/Urho3D-CMake-magic.cmake

@@ -287,10 +287,10 @@ macro (setup_library)
                 COMMENT "Copying object files to a common location also used by Makefile generator")
                 COMMENT "Copying object files to a common location also used by Makefile generator")
         elseif (XCODE)
         elseif (XCODE)
             # Specific to Xcode generator
             # Specific to Xcode generator
-            file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.dir)
+            set (SYMLINK ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.lnk)
             add_custom_command (TARGET ${TARGET_NAME} PRE_LINK
             add_custom_command (TARGET ${TARGET_NAME} PRE_LINK
-                COMMAND cp -p "$(OBJECT_FILE_DIR)-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/*.o" ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.dir
-                COMMENT "Copying object files to a common location also used by Makefile generator")
+                COMMAND rm -f ${SYMLINK} && ln -s "$(OBJECT_FILE_DIR)-$(CURRENT_VARIANT)/$(CURRENT_ARCH)" ${SYMLINK}
+                COMMENT "Creating a symbolic link pointing to object file directory")
         endif ()
         endif ()
     endif ()
     endif ()
 endmacro ()
 endmacro ()