0
点赞
收藏
分享

微信扫一扫

CMAKE生成iOS和iPad配置

本文主要记录 CMAKE生成iOS,iPad 工程 和 静态库的一些方法

CMake提供了两个基本模版

1 MacOSXFrameworkInfo.plist.in
2 MacOSXBundleInfo.plist.in
位置在 CMake文件夹->Modules中

CMake 官方文档

// 常用配置
set(MACOSX_FRAMEWORK_IDENTIFIER "allen.cn")    
set(MACOSX_FRAMEWORK_NAME "GoodSDK")    
set(MACOSX_FRAMEWORK_BUNDLE_VERSION "1.0.0")    
set(MACOSX_FRAMEWORK_SHORT_VERSION_STRING "1.0.0")

可以指定模版,并且指定路径

set_target_properties(
    ....
    MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_CURRENT_LIST_DIR}/Info.plist.in
    ....
)

link 系统库

if(IOS)
		find_library(lib-uikit UIKit)
		find_library(lib-arkit ARKit)
		find_library(lib-avfoundation AVFoundation)
		find_library(lib-webkit WebKit)
		find_library(lib-eventkit EventKit)
		find_library(lib-coremedia CoreMedia)
		find_library(lib-corevideo CoreVideo)
		find_library(lib-corelocation CoreLocation)
		find_library(lib-coregraphics CoreGraphics)
		find_library(lib-corebluetooth CoreBluetooth)
		find_library(lib-coremotion CoreMotion)
		find_library(lib-gss GSS)
		find_library(lib-videotoolbox VideoToolbox)
		find_library(lib-audiotoolbox AudioToolbox)
		find_library(lib-photos Photos)
		find_library(lib-iconv iconv)
		find_library(lib-gles OpenGLES)
		find_library(lib-accelerate Accelerate)

		target_link_libraries(CPRenderInstance
			${lib-uikit}
			${lib-arkit}
			${lib-avfoundation}
			${lib-webkit}
			${lib-eventkit}
			${lib-coremedia}
			${lib-corevideo}
			${lib-corelocation}
			${lib-coregraphics}
			${lib-corebluetooth}
			${lib-gss}
			${lib-videotoolbox}
			${lib-audiotoolbox}
			${lib-photos}
			${lib-iconv}
			${lib-gles}
			${lib-accelerate}
			-lz
		)
endif()

基础配置项

set_target_properties(
    AlgorithmSDK PROPERTIES
    # Make target is framework
    FRAMEWORK TRUE
    FRAMEWORK_VERSION C
    MACOSX_FRAMEWORK_IDENTIFIER ${MACOSX_FRAMEWORK_IDENTIFIER}
    MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_CURRENT_LIST_DIR}/Info.plist.in
    # Mark which headers should public
    PUBLIC_HEADER ${TARGET_HEADERS}
    ## ----------------------------------
    ## Architecture
    ## ----------------------------------
    XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES"
    XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Release] "NO"
    ## ----------------------------------
    ## Build Location
    ## ----------------------------------
    XCODE_ATTRIBUTE_SYMROOT "build"
    ## ----------------------------------
    ## Build Option
    ## ----------------------------------
    XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Debug] "dwarf"
    XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym"
    ## ----------------------------------
    ## Deployment
    ## ----------------------------------
    # Enable iPhone,iPad, cmake default is iPhone
    XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"
    # Enable framework can archive, cmake default is NO
    XCODE_ATTRIBUTE_SKIP_INSTALL "YES"
    XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_LIBRARY_DIR)/Frameworks"
    ## ----------------------------------
    ## Link
    ## ----------------------------------
    XCODE_ATTRIBUTE_DYLIB_INSTALL_NAME_BASE "@rpath"
    XCODE_ATTRIBUTE_LD_DYLIB_INSTALL_NAME "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"
    XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"
    XCODE_ATTRIBUTE_DYLIB_COMPATIBILITY_VERSION "1"
    XCODE_ATTRIBUTE_DYLIB_CURRENT_VERSION "1"
    ## ----------------------------------
    ## Packaging
    ## ----------------------------------
    XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${MACOSX_FRAMEWORK_IDENTIFIER}
    ## ----------------------------------
    ## Apple Clang - Language - C++
    ## ----------------------------------
    XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "gnu++14"
    XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++"
    ## ----------------------------------
    ## Apple Clang - Language - Modules
    ## ----------------------------------
    XCODE_ATTRIBUTE_CLANG_ENABLE_MODULES "YES"
    ## ----------------------------------
    ## Apple Clang - Language - Objective-C
    ## ----------------------------------
    # Enable ARC, cmake default is MRC
    XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES"
    XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_WEAK "YES"
    ## ----------------------------------
    ## Apple Clang - Language - Code Generation
    ## ----------------------------------
    XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS "YES"
)

签名问题

set_target_properties(dynamicFramework PROPERTIES
  ........
  XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
)

将另一个工程的文件添加到生成的工程中

if(IOS)
    file(GLOB_RECURSE extraSrcs
    ${CMAKE_CURRENT_LIST_DIR}/source/private/app/core/pugixml/*
    ${CMAKE_CURRENT_LIST_DIR}/source/private/platform/iphone/*.mm
    ${CMAKE_CURRENT_LIST_DIR}/source/private/platform/iphone/arkit/*.cpp
    ${CMAKE_CURRENT_LIST_DIR}/source/private/platform/iphone/arkit/*.mm
    ${CMAKE_CURRENT_LIST_DIR}/source/private/audio/*.mm
	${CMAKE_CURRENT_LIST_DIR}/source/private/features/mono/*.mm
    )
	arc_common_part({input other name})

endif()
举报

相关推荐

0 条评论