我在OS X 10.10.5上使用CMake 3.3.2和Xcode 7.1。

我有一个使用CMake的小型C++项目。我希望它在OS X 10.9或更高版本上运行。因此,我修改了CMakeLists.txt使其开始:

cmake_minimum_required(VERSION 3.3)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9")

project(...

然后,我像这样创建Xcode项目:
cmake -G Xcode <path>

但是,生成的xcodeproj bundle 包似乎没有设置部署目标。当我在文本编辑器中打开包含的project.pbxproj文件时,没有一行提到MACOSX_DEPLOYMENT_TARGET

因此,当我在Xcode中打开项目时,在Build Settings> Deployment> OS X Deployment Target下,无论我在CMakeLists.txt中指定什么,Xcode始终显示默认值“OS X 10.11”。当我手动更改Xcode中的设置,然后在文本编辑器中重新打开项目文件时,已正确添加了MACOSX_DEPLOYMENT_TARGET = 10.9;行。

难道我做错了什么?谷歌搜索问题没有得到任何最新结果。

最佳答案

必须在第一个CMAKE_OSX_DEPLOYMENT_TARGET命令之前将变量project()初始化为缓存变量,以便正确拾取Xcode项目生成:

set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version")

如果未明确将其设置为缓存变量,则CMAKE_OSX_DEPLOYMENT_TARGET将由MACOSX_DEPLOYMENT_TARGET环境变量初始化。

像上面的分配中一样,缓存变量的初始化也将覆盖相同作用域中同名的非缓存变量的值。

07-24 09:37
查看更多