CMake的可以指定在Mac OS X的基础SDK?(Can CMake specify the b

2019-06-23 16:01发布

有谁知道怎么办指定的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开发者预览努力(有一些怪异的结果,看到我的答案)。

Answer 1:

试图沙克拉的有效应答(有效尽可能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}")

我希望这可以帮助别人! :-)



Answer 2:

您可以设置变量CMAKE_OSX_SYSROOT在配置项目所选择的SDK。 例如:

cmake -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk/ ..

查看文档在这里 。

还要注意的是2.8.8之前的CMake版本并不能支持的Xcode 4.3。



Answer 3:

增加您的CMakeLists.txt以下命令

集(CMAKE_OSX_SYSROOT macosx10.10)

集(CMAKE_OSX_DEPLOYMENT_TARGET “10.5”)

这应该是罚款。



文章来源: Can CMake specify the base SDK on Mac OS X?
标签: c++ macos cmake