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
。環境変数も指定する必要があることがわかりました。
とにかく、10.7用にコンパイルするためにMountain Lion(OSX 10.8)で実行するときに私がやっていることは次のとおりです。
コマンドライン:
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}")
これが誰かに役立つことを願っています!:-)