Enable MuJoCo Studio build and packaging on macos.

Also:
- Packages MuJoCo Studio as MuJoCoStudio.app in the MuJoCo.dmg.
- Fixes a Filament compile issue.
- Patches libwebp to fix compile error related to universal builds and forces
  it to build as static.
- Removes the separate, obsolete "build_studio" step.
PiperOrigin-RevId: 934564785
Change-Id: I50c83283b5e138062e37d53926a5a77fdf99dbfa
This commit is contained in:
Michael Moss
2026-06-18 15:02:25 -07:00
committed by Copybara-Service
parent 8db92ab4a9
commit e7ef6528b7
7 changed files with 107 additions and 11 deletions
+26 -8
View File
@@ -54,24 +54,31 @@ function(configure_studio_target TARGET_NAME)
mujoco::platform
)
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets)
get_target_property(IS_BUNDLE ${TARGET_NAME} MACOSX_BUNDLE)
if(IS_BUNDLE)
set(STUDIO_ASSETS_DIR $<TARGET_FILE_DIR:${TARGET_NAME}>/../Resources/assets)
else()
set(STUDIO_ASSETS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets)
endif()
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${STUDIO_ASSETS_DIR}
COMMAND ${CMAKE_COMMAND}
-E copy
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../_deps/opensans-src/fonts/ttf/OpenSans-Regular.ttf
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets
${STUDIO_ASSETS_DIR}
COMMENT "Copying OpenSans-Regular.ttf assets to build directory"
)
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${STUDIO_ASSETS_DIR}
COMMAND ${CMAKE_COMMAND}
-E copy
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../_deps/font_awesome-src/fonts/fontawesome-webfont.ttf
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets
${STUDIO_ASSETS_DIR}
COMMENT "Copying fontawesome-webfont.ttf to build directory"
)
@@ -80,10 +87,11 @@ function(configure_studio_target TARGET_NAME)
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${STUDIO_ASSETS_DIR}
COMMAND ${CMAKE_COMMAND}
-E copy_directory
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../src/render/filament/assets
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets
${STUDIO_ASSETS_DIR}
COMMENT "Copying Filament assets to build directory"
)
endif()
@@ -92,6 +100,13 @@ endfunction()
# Desktop Studio target.
if(NOT EMSCRIPTEN)
add_executable(mujoco_studio)
if(APPLE AND MUJOCO_BUILD_MACOS_FRAMEWORKS)
set_target_properties(mujoco_studio PROPERTIES
MACOSX_BUNDLE TRUE
INSTALL_RPATH "@executable_path/../Frameworks;@executable_path/../../.."
BUILD_WITH_INSTALL_RPATH TRUE
)
endif()
target_sources(mujoco_studio PRIVATE main.cc)
configure_studio_target(mujoco_studio)
install(
@@ -99,10 +114,13 @@ if(NOT EMSCRIPTEN)
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT studio
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT studio
)
install(
DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets"
DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT studio
)
get_target_property(IS_BUNDLE mujoco_studio MACOSX_BUNDLE)
if(NOT IS_BUNDLE)
install(
DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets"
DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT studio
)
endif()
endif()
# WASM Live target.
+4
View File
@@ -42,6 +42,10 @@ std::string Resolve(std::string_view path) {
if (exe_dir.empty()) {
return std::string("assets/") + std::string(subpath);
}
std::filesystem::path resources_dir = exe_dir.parent_path() / "Resources";
if (std::filesystem::exists(resources_dir / "assets")) {
return (resources_dir / "assets" / subpath).string();
}
return (exe_dir / "assets" / subpath).string();
}