在尝试 sakra 的有效答案(就 CMake 的行为而言有效)失败后,我进行了一番挖掘,发现如果我--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
是 Synergy 中的一个类(我正在研究的一个开源项目)。
更新:
刚刚在我的 10.6 安装上尝试过这个,当我尝试为 10.5 编译时遇到链接器错误——结果你还需要指定MACOSX_DEPLOYMENT_TARGET
环境变量!
无论如何,这就是我在 Mountain Lion (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}")
我希望这可以帮助别人!:-)