Browse Source

Update CMakeLists.txt for the default GEM to match current project template logic

Signed-off-by: Steve Pham <[email protected]>
Steve Pham 2 năm trước cách đây
mục cha
commit
3264676f76
2 tập tin đã thay đổi với 34 bổ sung11 xóa
  1. 1 1
      CMakeLists.txt
  2. 33 10
      Gem/CMakeLists.txt

+ 1 - 1
CMakeLists.txt

@@ -9,7 +9,7 @@
 #
 
 if(NOT PROJECT_NAME)
-    cmake_minimum_required(VERSION 3.20)
+    cmake_minimum_required(VERSION 3.22)
     include(cmake/EngineFinder.cmake OPTIONAL)
     find_package(o3de REQUIRED)
     project(RobotVacuumSample

+ 33 - 10
Gem/CMakeLists.txt

@@ -6,8 +6,20 @@
 #
 #
 
-set(gem_path ${CMAKE_CURRENT_LIST_DIR})
+# Query the gem name from the gem.json file if possible
+# otherwise fallback to using ${Name}
+o3de_find_ancestor_gem_root(gempath gem_name "${CMAKE_CURRENT_SOURCE_DIR}")
+if (NOT gem_name)
+    set(gem_name "RobotVacuumSample")
+endif()
+
+# Fallback to using the current source CMakeLists.txt directory as the gem root path
+if (NOT gem_path)
+    set(gem_path ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
 set(gem_json ${gem_path}/gem.json)
+
 o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
 
 # Currently we are in the RobotVacuumSample/Gem folder: ${CMAKE_CURRENT_LIST_DIR}
@@ -30,11 +42,11 @@ if(NOT PAL_TRAIT_ROBOT_VACUUM_SAMPLE_SUPPORTED)
     return()
 endif()
 
-# We are on a supported platform, so add the RobotVacuumSample target
+# We are on a supported platform, so add the ${gem_name} target
 # Note: We include the common files and the platform specific files which are set in robot-vacuum-sample_files.cmake and
 # in ${pal_dir}/robot_vacuum_sample_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
 ly_add_target(
-    NAME RobotVacuumSample.Static STATIC
+    NAME ${gem_name}.Static STATIC
     NAMESPACE Gem
     FILES_CMAKE
         robot_vacuum_sample_files.cmake
@@ -49,7 +61,7 @@ ly_add_target(
 )
 
 ly_add_target(
-    NAME RobotVacuumSample ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+    NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
     NAMESPACE Gem
     FILES_CMAKE
         robot_vacuum_sample_shared_files.cmake
@@ -59,19 +71,30 @@ ly_add_target(
             Include
     BUILD_DEPENDENCIES
         PRIVATE
-            Gem::RobotVacuumSample.Static
+            Gem::${gem_name}.Static
             AZ::AzCore
 )
 
 # if enabled, RobotVacuumSample is used by all kinds of applications
-ly_create_alias(NAME RobotVacuumSample.Builders NAMESPACE Gem TARGETS Gem::RobotVacuumSample)
-ly_create_alias(NAME RobotVacuumSample.Tools    NAMESPACE Gem TARGETS Gem::RobotVacuumSample)
-ly_create_alias(NAME RobotVacuumSample.Clients  NAMESPACE Gem TARGETS Gem::RobotVacuumSample)
-ly_create_alias(NAME RobotVacuumSample.Servers  NAMESPACE Gem TARGETS Gem::RobotVacuumSample)
+ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Tools    NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Clients  NAMESPACE Gem TARGETS Gem::${gem_name})
+ly_create_alias(NAME ${gem_name}.Servers  NAMESPACE Gem TARGETS Gem::${gem_name})
 
 ################################################################################
 # Gem dependencies
 ################################################################################
 
+# Query the project name from the nearest project.json file in a directory at or above
+# the current one.
+# This gem is the project gem and therefore should be part of the project that is using it
+o3de_find_ancestor_project_root(project_path project_name "${CMAKE_CURRENT_SOURCE_DIR}")
+
+# If the project name could not be queried from a project.json file, then fallback
+# to using the name of the project provided when the project template was instantiated
+if (NOT project_name)
+    set(project_name ${Name})
+endif()
+
 # Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
-ly_enable_gems(PROJECT_NAME RobotVacuumSample GEM_FILE enabled_gems.cmake)
+ly_enable_gems(PROJECT_NAME ${project_name} GEM_FILE enabled_gems.cmake)