Sfoglia il codice sorgente

Complete correct Mac OS X build for sample racer.

Michel Lesoinne 10 anni fa
parent
commit
9e58fa17fb
3 ha cambiato i file con 117 aggiunte e 21 eliminazioni
  1. 32 0
      samples/BuildHelpers.CMakeLists.txt
  2. 0 1
      samples/CMakeLists.txt
  3. 85 20
      samples/racer/CMakeLists.txt

+ 32 - 0
samples/BuildHelpers.CMakeLists.txt

@@ -49,3 +49,35 @@ macro(COPY_RES_EXTRA GAME_NAME REL_DIR)
     COPY_RES_FILES( ${GAME_NAME} ${GAME_NAME}_EXTRA_RES ${REL_DIR} "${SRC_FILES}" )
     add_dependencies( ${GAME_NAME}_ASSETS ${GAME_NAME}_EXTRA_RES )
 endmacro()
+
+# Build a list of file matching a list of regular expression within a given path
+#   RESULT name of the global variable into which the result is built
+#   REL_PATH the path under which the files are to be found
+#   ARGN list of patterns
+macro(MAKE_ABSOLUTE RESULT REL_PATH)
+    set(${RESULT})
+    foreach(SRC_FILE ${ARGN} )
+        file(GLOB XX ${REL_PATH}/${SRC_FILE})
+        list(APPEND ${RESULT} ${XX})
+    endforeach()
+endmacro()
+
+macro(COPY_RES_MAC RESULT BASE_SRC_PATH REL_PATH)
+	set(${RESULT})
+	MESSAGE("COPY_RES_MAC with base ${BASE_SRC_PATH} and rel ${REL_PATH}")
+	#foreach(PATTERN ${ARGN} )
+            file(GLOB_RECURSE XX RELATIVE ${BASE_SRC_PATH} ${BASE_SRC_PATH}/${REL_PATH}/${PATTERN})
+            MESSAGE("XX is ${XX}")
+            foreach(FNAME ${XX})
+                list(APPEND ${RESULT} ${BASE_SRC_PATH}/${XX})
+                MESSAGE("Working on ${FNAME}")
+                get_filename_component(YY ${FNAME} DIRECTORY )
+                MESSAGE("Directory is ${YY} for ${BASE_SRC_PATH}/${FNAME}")
+                SET_SOURCE_FILES_PROPERTIES(
+                            ${BASE_SRC_PATH}/${FNAME}
+                            PROPERTIES
+                            MACOSX_PACKAGE_LOCATION Resources/${YY}
+                    )
+            endforeach()
+    #endforeach()
+endmacro()

+ 0 - 1
samples/CMakeLists.txt

@@ -36,7 +36,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
             ${IOKIT_LIBRARY}
             "-framework Foundation"
             "-framework Cocoa")
-    SET(EXEC_TYPE MACOSX_BUNDLE)
     link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/macosx/x86_64)
     set(GAMEPLAY_LIBRARIES
             stdc++

+ 85 - 20
samples/racer/CMakeLists.txt

@@ -1,30 +1,95 @@
 set(GAME_NAME sample-racer)
 
 set(GAME_SRC
-    src/RacerGame.cpp
-    src/RacerGame.h
-)
+        src/RacerGame.cpp
+        src/RacerGame.h
+        )
 
-add_executable(${GAME_NAME}
-    ${GAME_SRC}
-)
+if(!${APPLE})
+    set_target_properties(${GAME_NAME} PROPERTIES
+            OUTPUT_NAME "${GAME_NAME}"
+            CLEAN_DIRECT_OUTPUT 1
+            )
+endif(!${APPLE})
 
+source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
+source_group(src FILES ${GAME_SRC})
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    MAKE_ABSOLUTE(GAMEPLAY_RES_SHADERS  ${CMAKE_SOURCE_DIR}/gameplay
+            res/shaders/*)
+    MAKE_ABSOLUTE(GAMEPLAY_RES_UI  ${CMAKE_SOURCE_DIR}/gameplay
+            res/ui/*)
+    MESSAGE("GP Shaders ${GAMEPLAY_RES_SHADERS}")
+#    include(BundleUtilities)
+#    SET(GAME_RES res/png/car.png)
+    COPY_RES_MAC(GAME_RES ${CMAKE_SOURCE_DIR}/samples/racer res/*)
+    message("Resources are ${GAME_RES} !!!")
+    set(Apple_Resources
+            ../../gameplay/res/logo_powered_white.png
+            ${GAME_RES}
+            ${GAMEPLAY_RES}
+            ${GAMEPLAY_RES_SHADERS}
+            ${GAMEPLAY_RES_UI}
+            game.config)
+    SET(EXEC_TYPE MACOSX_BUNDLE)
+    SET_SOURCE_FILES_PROPERTIES(
+            ../../gameplay/res/logo_powered_white.png
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources/res
+    )
+    SET_SOURCE_FILES_PROPERTIES(
+            ${GAMEPLAY_RES_SHADERS}
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources/res/shaders
+    )
+    SET_SOURCE_FILES_PROPERTIES(
+            ${GAMEPLAY_RES_UI}
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources/res/ui
+    )
+    SET_SOURCE_FILES_PROPERTIES(
+            game.config
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources
+    )
+    set( MACOSX_BUNDLE_INFO_STRING "\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\",\nCopyright 2016 gameplay3d contributors" )
+    set( MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}" )
+    set( MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_COPYRIGHT "(C) gameplay3d contributors" )
+    set( PLIST_TEMPLATE sample-racer-macosx.plist )
+    configure_file( game.png.config game.config COPYONLY )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+add_executable(${GAME_NAME} ${EXEC_TYPE}
+        ${GAME_SRC}
+        ${Apple_Resources}
+        )
 target_link_libraries(${GAME_NAME} ${GAMEPLAY_LIBRARIES})
 
-set_target_properties(${GAME_NAME} PROPERTIES
-    OUTPUT_NAME "${GAME_NAME}"
-    CLEAN_DIRECT_OUTPUT 1
-)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    #    SET_TARGET_PROPERTIES( ${GAME_NAME}
+    #            PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/samples/racer/${PLIST_TEMPLATE}" )
+    #    install(TARGETS ${GAME_NAME}
+    #            RUNTIME DESTINATION bin
+    #            BUNDLE DESTINATION bundle
+    #            )
+#    GET_BUNDLE_AND_EXECUTABLE(${GAME_NAME} BUNDLE_NAME EXEC_NAME VALID_TAG)
+#    message("Bundle name is ${BUNDLE_NAME} valid ${VALID_TAG}")
+#    GET_DOTAPP_DIR(${GAME_NAME} DIR_NAME)
+#    message(".app dirr name is ${DIR_NAME}")
+    configure_file( game.png.config game.config COPYONLY )
+else(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
-source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAME_SRC})
 
-COPY_RES( ${GAME_NAME} )
-COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
-    res/logo_powered_white.png 
-    res/shaders/*
-    res/ui/*
-)
+    COPY_RES( ${GAME_NAME} )
+    COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
+            res/logo_powered_white.png
+            res/shaders/*
+            res/ui/*
+            )
 
-# Just use the PNG config file (most compatible)
-configure_file( game.png.config game.config COPYONLY )
+    # Just use the PNG config file (most compatible)
+    configure_file( game.png.config game.config COPYONLY )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")