Как создать новую цель в Xcode для расширения приложения с помощью CMake?
Я хочу использовать расширение содержимого уведомлений в моем Xcode
проект. Я использую CMake для генерации моего проекта. Теперь у проекта есть только одна цель.
Я могу добавить расширение как новую цель вручную в Xcode
используя меню Файл - Новый - Цель - Notification
Расширение контента.
Не могли бы вы привести пример, как создать новый Xcode
проект с дополнительной целью для расширения приложения с помощью CMake?
2 ответа
Начиная с CMake 3.8, вы можете использовать XCODE_PRODUCT_TYPE
свойство target, позволяющее CMake генерировать конкретный тип приложения.
Минимальный пример, который должен помочь вам:
# add app bundle
add_executable(MyApp MACOSX_BUNDLE ${APP_SOURCE_FILES})
# add app extension bundle
add_library(MyAppExtension MODULE ${APPEX_SOURCE_FILES})
set_target_properties(MyAppExtension PROPERTIES
BUNDLE YES
XCODE_PRODUCT_TYPE com.apple.product-type.app-extension)
# link extension bundle with UserNotifications frameworks
find_library(UN_LIB UserNotifications)
find_library(UNUI_LIB UserNotificationsUI)
target_link_libraries(MyAppExtension PRIVATE ${UN_LIB} ${UNUI_LIB})
Я тестировал cmake3.23 на Mac, расширение приложения — это исполняемый файл, а не библиотека. Это должно быть так:
add_executable(MyAppExtension MACOSX_BUNDLE ${APPEX_SOURCE_FILES})
set_target_properties(MyAppExtension PROPERTIES
XCODE_PRODUCT_TYPE com.apple.product-type.app-extension)
Затем вы можете встроить расширение приложения в приложение:
set_target_properties(MyApp PROPERTIES
XCODE_EMBED_APP_EXTENSIONS MyAppExtension)