我在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
环境变量初始化。像上面的分配中一样,缓存变量的初始化也将覆盖相同作用域中同名的非缓存变量的值。