如何使用 CMake 在 Xcode 中为应用程序扩展创建新目标?
How to create the new target in Xcode for app extension using CMake?
我想在我的 Xcode
项目中使用通知内容扩展。
我使用 CMake 生成我的项目。
现在项目只有一个target。
我可以在 Xcode
中使用菜单文件 - 新建 - 目标 - Notification
内容扩展手动将扩展添加为新目标。
您能否提供一个示例,说明如何使用 CMake 创建新的 Xcode
项目以及应用扩展的附加目标?
从 CMake 3.8 开始,您可以使用 XCODE_PRODUCT_TYPE
目标 属性 让 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})
我在 mac 上的 cmake3.23 上进行了测试,应用程序扩展是可执行文件而不是库。应该是这样的:
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)
我想在我的 Xcode
项目中使用通知内容扩展。
我使用 CMake 生成我的项目。
现在项目只有一个target。
我可以在 Xcode
中使用菜单文件 - 新建 - 目标 - Notification
内容扩展手动将扩展添加为新目标。
您能否提供一个示例,说明如何使用 CMake 创建新的 Xcode
项目以及应用扩展的附加目标?
从 CMake 3.8 开始,您可以使用 XCODE_PRODUCT_TYPE
目标 属性 让 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})
我在 mac 上的 cmake3.23 上进行了测试,应用程序扩展是可执行文件而不是库。应该是这样的:
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)