有谁知道怎么办指定的Mac OS X SDK构建针对与CMake的? 我已经寻找cmake mac "base sdk"
,但这却一无所获。
我使用的CMake生成Unix的makefile文件。
更新
在我安装10.6,我看到/Developer/SDKs
有以下几点:
- MacOSX10.4u.sdk
- MacOSX10.5.sdk
- MacOSX10.6.sdk
也许我可以得到的CMake通过这些路径到编译器以某种方式之一吗?
另外,我的10.7只安装有:
- MacOSX10.6.sdk
- MacOSX10.7.sdk
这是否意味着它只能建立在这些平台?
更新2
妈的,我才意识到,其实我不使用Xcode中 - 因此这可能会影响一些答案。 另外,我现在用的Mac OS X 10.8开发者预览努力(有一些怪异的结果,看到我的答案)。
试图沙克拉的有效应答(有效尽可能CMake的是suposed表现)后unsucessfully,我身边有一个挖,结果发现,如果我指定的--sysroot
标志的编译器,它似乎使用正确的SDK!
不过,我现在看到这个错误,当我编译反对10.7(我不看10.8):
Undefined symbols for architecture i386:
"_NXArgv", referenced from:
execSelfNonDaemonized() in libarch.a(CArchDaemonUnix.o)
CArchDaemonUnix::daemonize(char const*, int (*)(int, char const**)) in libarch.a(CArchDaemonUnix.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/synergyc] Error 1
make[1]: *** [src/cmd/synergyc/CMakeFiles/synergyc.dir/all] Error 2
make: *** [all] Error 2
注: CArchDaemonUnix
是协同类(一个开源项目,我的工作)。
更新:
只是尝试这样做对我的10.6安装,并试图编译为10.5,当我得到一个链接错误-原来你还需要指定MACOSX_DEPLOYMENT_TARGET
环境变量!
总之,这里的一对山狮(OSX 10.8)运行编译10.7时候我在做什么:
命令行:
MACOSX_DEPLOYMENT_TARGET=10.7
cmake -G "Unix Makefiles" -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.7.sdk/ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.7 ../..
的CMakeLists.txt:
set(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}")
我希望这可以帮助别人! :-)
您可以设置变量CMAKE_OSX_SYSROOT
在配置项目所选择的SDK。 例如:
cmake -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk/ ..
查看文档在这里 。
还要注意的是2.8.8之前的CMake版本并不能支持的Xcode 4.3。
增加您的CMakeLists.txt以下命令
集(CMAKE_OSX_SYSROOT macosx10.10)
集(CMAKE_OSX_DEPLOYMENT_TARGET “10.5”)
这应该是罚款。