Try making a macos bundle.

This commit is contained in:
Bartosz Taudul
2026-07-21 16:42:33 +02:00
parent fb4dcd4e96
commit b32d454bcd
3 changed files with 55 additions and 2 deletions

View File

@@ -31,7 +31,7 @@ jobs:
uses: ./.github/actions/test-tracy
- name: Build profiler
run: |
cmake -B profiler/build -S profiler -DCMAKE_BUILD_TYPE=Release -DGIT_REV=${{ github.sha }}
cmake -B profiler/build -S profiler -DCMAKE_BUILD_TYPE=Release -DBUNDLE=ON -DGIT_REV=${{ github.sha }}
cmake --build profiler/build --parallel 2 --config Release
- name: Build update
run: |
@@ -56,7 +56,7 @@ jobs:
- name: Package artifacts
run: |
mkdir -p bin
cp profiler/build/tracy-profiler bin
ditto -c -k --keepParent profiler/build/tracy-profiler.app bin/tracy-profiler.app.zip
cp update/build/tracy-update bin
cp capture/build/tracy-capture bin
cp csvexport/build/tracy-csvexport bin

View File

@@ -8,6 +8,10 @@ set_option(LEGACY "Instead of Wayland, use the legacy X11 backend on Linux" OFF)
set_option(SELF_PROFILE "Enable self-profiling" OFF)
set_option_value(SANITIZE "Sanitizer parameters" "")
if(APPLE)
set_option(BUNDLE "Build a macOS application bundle" OFF)
endif()
set(NO_STATISTICS OFF)
include(${CMAKE_CURRENT_LIST_DIR}/../cmake/version.cmake)
@@ -261,6 +265,25 @@ if(WIN32)
)
add_executable(${PROJECT_NAME} WIN32 ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES})
set_property(DIRECTORY ${CMAKE_CURRENT_LIST_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
elseif(APPLE AND BUNDLE)
set(ICON_SRC ${CMAKE_CURRENT_LIST_DIR}/../icon/icon.png)
set(ICON_ICNS ${CMAKE_CURRENT_BINARY_DIR}/icon.icns)
add_custom_command(
OUTPUT ${ICON_ICNS}
COMMAND sips -s format icns ${ICON_SRC} --out ${ICON_ICNS}
DEPENDS ${ICON_SRC}
)
set_source_files_properties(${ICON_ICNS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES} ${ICON_ICNS})
set_target_properties(${PROJECT_NAME} PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_LIST_DIR}/macos/Info.plist.in
MACOSX_BUNDLE_BUNDLE_NAME "Tracy Profiler"
MACOSX_BUNDLE_GUI_IDENTIFIER "pl.nereid.tracy"
MACOSX_BUNDLE_BUNDLE_VERSION ${TRACY_VERSION_STRING}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${TRACY_VERSION_STRING}
MACOSX_BUNDLE_ICON_FILE icon.icns
MACOSX_BUNDLE_COPYRIGHT "Bartosz Taudul"
)
else()
add_executable(${PROJECT_NAME} ${PROFILER_FILES} ${COMMON_FILES} ${SERVER_FILES})
endif()

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>