Mac下cmake使用
文章目录
- 编译iOS库
- 指定编译库的路径
编译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
Mac下cmake使用相关推荐
- Mac下安装Xcode、PCL、Homebrew、Cmake
第一步:mac下镜像飞速安装Homebrew教程 在网上找的教程出现错误: curl: (7) Failed to connect to raw.githubusercontent.com port ...
- 在Mac下安装使用OpenCV
教导大家如何在Mac下安装使用OpenCV, 包括使用编译器,Xcode,和Eclipse的开发方法 系统环境:ML10.7.5 cmake版本:2.8.10 XCode版本:4.5.1 Open ...
- linux下cmake命令行,深入理解CMake(1): CMake命令行参数
初衷 CMake能用来编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器.链接器,生成各个目标(静态库,静态库,或者可执行). 我第一个接触的大型C++项目是Op ...
- mac下RTSP服务器搭建(ZLMediaKit)
mac下RTSP服务器搭建(ZLMediaKit) 目录 获取代码 编译器 cmake 依赖库 构建和编译项目 运行 测试 注:参考wiki(包含其他系统安装方式):https://github.co ...
- mac 下基于firebreath 开发多浏览器支持的浏览器插件
mac 下基于firebreath 开发多浏览器支持的浏览器插件 首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.fir ...
- Mac下Boost环境搭建
Boost,一个功能强大.跨平台.开源而且免费的C++程序库,可以在其官网了解更多:http://www.boost.org,C++标准经过不断的升级完善,现在已经功能越来越吸引人了,Boost开发过 ...
- OpenCV(一)Mac下OpenCV的安装和配置
Homebrew简介及安装 1.Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Red hat有yum,Ubuntu有apt-get ...
- android studio日志不打印,Mac 下 Android Studio 不打印日志的解决办法
Mac 下 Android Studio 不打印日志的解决办法 Mac 下 Android Studio 不打印日志的解决办法 前言: 在 Mac 下使用 Android Studio 时常会遇到 A ...
- mac下hadoop 2.6.0编译native library
本文中的所有路径请根据个人情况修改. 编译好的native library见个人资源:[http://download.csdn.net/detail/tterminator/9565597] 一.为 ...
最新文章
- Android include 标签
- Windows XP系统八种安全模式揭密
- PHP(三)——PHP基础知识
- Java命令行界面(第19部分):jClap
- 生产环境下,oracle不同用户间的数据迁移。第三部分
- Scala 获取当前时间
- 二维数组找鞍点c语言,怎么求一个二维数组的鞍点
- IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
- 几种web报表打印方案的比较
- python修改txt里面的内容_python修改txt部分内容,并保存。
- python中怎样划分时间段_如何划分重叠的日期时间间隔(组织模式时钟时间)?...
- druid连接池_springboot三步整合阿里数据库连接池druid
- [轉]快速理解VirtualBox的四种网络连接方式
- 企业局域网即时通讯软件存在是必然趋势
- python微信好友分析源代码_Python简单分析微信好友
- py----Geany编辑器的安装_配置与使用
- MySQL删除数据后,释放磁盘空间
- app窃取用户隐私_窃取您的隐私8步初学者指南
- R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
- 计算机专业要考什么证书?