本文介绍: 指定是不是启用bitcode,这个需要根据各自的项目需求设置,NO是不适用bitcode优化;CMakeList.txt中的配置是通用的,编译目标系统需要编译命令。上图中是指定生成编译库的路径后的效果指定编译路径方式在下节介绍通过上面的判断就可区分出当前编译的是iOS还是MacOS的库,然后通过。很多时候当编译不同平台的库的时候我们希望编译的库放在不通的目录下,是指定目标包含架构这里指定armv7和arm64两个架构;就可以指定编译二进制库的输出路径需要注意的是上面的代码需要放在。.

编译iOS库

CMakeList.txt中的配置是通用的,编译目标系统需要在编译命令cmake后面指定,在Mac系统默认编译的是基于Mac系统x86_64的,指定编译iOS可以使用下列命令

cmake .. -GXcode 
    -DCMAKE_SYSTEM_NAME=iOS 
    "-DCMAKE_OSX_ARCHITECTURES=armv7;arm64" 
    -DCMAKE_OSX_SYSROOT=iphoneos
    -DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 
    -DCMAKE_INSTALL_PREFIX=`pwd`/_install 
    -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO 
    -DCMAKE_IOS_INSTALL_COMBINED=YES 
    -DENABLE_BITCODE=NO

其中GXcode 会生成xcode工程DCMAKE_OSX_ARCHITECTURES是指定目标包含架构这里指定了armv7和arm64两个架构DENABLE_BITCODE指定是不是启用bitcode,这个需要根据各自的项目需求设置,NO是不适用bitcode优化
cmake后面可以增加-DCMAKE_BUILD_TYPE=Release去指定编译的是release还是debug,例如编译macos可以如下指定:

   cmake -DCMAKE_BUILD_TYPE=Release ..
   cmake --build .

上面命令执行完后执行下列命令编译:

cmake --build . --config Release

执行后出现如下图显示表示编译成功:
在这里插入图片描述

官方文档中也是建议这样的方式进行编译,config后面指定的是编译的是release还是debug,最终编译的效果如下
在这里插入图片描述
上图中是指定了生成编译库的路径后的效果,指定编译库路径的方式在下节介绍

指定编译库的路径

很多时候当编译不同平台的库的时候我们希望编译的库放在不通的目录下,
cmake判断编译的目标系统ios还是macOS的方式:

if(APPLE AND  NOT IOS )
# iOS下
   set(LIBRARY_OUTPUT_PATH mac)
else()
# macOS下
   set(LIBRARY_OUTPUT_PATH ios)
endif( )

通过上面的判断就可区分出当前编译的是iOS还是MacOS的库,然后通过LIBRARY_OUTPUT_PATH可以指定编译的二进制库的输出路径
需要注意的是上面的代码需要放在add_library之前指定;
常用的判断系统的方式还有:

IF (WIN32)
	MESSAGE(STATUS "Now is windows")
ELSEIF (APPLE)
	MESSAGE(STATUS "Now is Apple systens.")
ELSEIF (UNIX)
	MESSAGE(STATUS "Now is UNIX-like OS's.")
ELSEIF(ANDROID)
   MESSAGE(STATUS "Now is Android OS's.")

官方系统支持的系统变量还有很多,具体看官方文档cmake-variables

原文地址:https://blog.csdn.net/lym594887256/article/details/125915386

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_16293.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注