您的位置:首页 > 移动开发 > IOS开发

使用cMake跨iOS平台编译过程以及配置

2015-11-16 09:53 781 查看
跨iOS平台编译方法及问题
跨iOS编译过程
修改工程目录下的cmakelist.txt文件

默认开启VR_BUILD_PLATFORM_IPHONE,否则cmake时很多报错。
修改iphone版本,设置C++编译器,设置sdk目录



IF(IPHONE_VERSION_MIN LESS "6.0")

       include(CMakeForceCompiler)

       CMAKE_FORCE_C_COMPILER(llvm-gcc-4.2 GNU)

       CMAKE_FORCE_CXX_COMPILER(llvm-gcc-4.2 GNU)

       SET(GCC_THUMB_SUPPORT NO)

    ENDIF()

IF(VR_BUILD_PLATFORM_IPHONE)

    SET (IPHONE_DEVROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer")

    SET (IPHONE_SDKROOT "${IPHONE_DEVROOT}/SDKs/iPhoneOS${IPHONE_SDKVER}.sdk")

ELSE()

  SET (IPHONE_DEVROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer")

      SET (IPHONE_SDKROOT "${IPHONE_DEVROOT}/SDKs/iPhoneSimulator${IPHONE_SDKVER}.sdk")

    ENDIF()
默认关闭VR_GL1_AVAILABLE,只开启VR_GL2_AVAILABLE

OPTION(VR_GL1_AVAILABLE "Set to OFF to disable use of OpenGL 1.x functions library."OFF)
默认关闭DYNAMIC_VRSTAR,使用静态编译
设置第三方依赖资源



设置c++标准库



IF (APPLE)

            # set standard lib, clang defaults to c++0x

            set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++98")

            set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")

            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -stdlib=libstdc++ -Wno-overloaded-virtual -Wno-conversion")

            set(WARNING_CFLAGS "")

        ENDIF()
设置xcode工程的部分属性



CMakeModules目录下添加相应的第三方Findxx.cmake脚本文件

配置第三方库的查找头文件路径,库全路径等,注意大小写。
启动Cmaker工具将cmakelist.txt拖入窗口



生成路径默认为cmakelist.txt所在目录,可更改(新建build文件夹)。
点击“Configure”按钮,进行选项配置,平台默认Xcode即可。
主要设置选项:



点击“Configure”按钮,直到配置成功。
最后点击“Generate”按钮,生成Xcode工程。



启动VRStar.xcodeproj,修改工程属性

1)总工程与各工程的Architectures改为标准结构,否则源码不能编译





根据ipad设备版本,修改IOS开发目标



  build工程,快捷键command+B,运行command+R

C++源码跨IOS注意事项
包含头文件时有子目录分隔符必须用“/”,否则不识别“\”
VRString.cpp toString()中,Size_t 不同平台定义不同.win32中win64时为unsinged
long long;IOS下为unsigned long,总是重定义,暂时去掉
不要使用UInt32,与IOS中重复定义,改为_uint或unsinged int
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: