2014-02-13 14 views
5

node-gyp을 통해 컴파일 중이며 C++로 작성된 Node.JS 패키지입니다. 컴파일하면 다음과 같은 오류 메시지가 나타납니다 : clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later). OSX 10.8에서 실행 중이며 XCode 명령 행 도구가 설치되어 있습니다.OSX 10.8에서 -stdlib = libC++에 대한 배포 타겟이 잘못되었습니다.

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'OTHER_CFLAGS': [ 
      "-std=c++11", 
      "-stdlib=libc++" 
     ], 
     }, 

     "sources": [ "package_src.cpp" ], 
    } 
    ] 
} 

은 기본적으로 컴파일, 종류와 플래그의 대상뿐만 아니라 소스를 지정 :이 패키지를 컴파일 할 노드 활력이 사용하는 파일입니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

2

,하지만 난 일을 가지고 방법이 있습니다 :

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'OTHER_CFLAGS': [ 
      "-std=c++11", 
     "-stdlib=libc++", 
     "-mmacosx-version-min=10.7" 
     ], 
     }, 

     "sources": [ "overcpu.cpp" ], 
    } 
    ] 
} 
+0

'-mmacosx-version-min = 10.7 "'을 지정하면 기본적으로 node-gyp이 삽입하는"-mmacosx-version-min = 10.5 "와 함께 끝납니다. 내 기억은 10.5가 끝나고 첫 번째를 무시한다는 것입니다. – drewish

+2

이 파일의 위치를 ​​알 수 있습니까? – NarendraSoni

8

OS X 10.8을 사용하는 동안 clang은 다른 구형 OS X 버전에서도 실행될 수 있도록 빌드하려고 시도합니다. -stdlib=libc++ 10.7의 최소 버전이 필요하기 때문에 명시 적으로 얘기하지 않는 한 당신이 xcode_settings 내부

'MACOSX_DEPLOYMENT_TARGET': '10.7' 

을 지정하여 배포 대상으로 10.7 이상을 사용하는거야 지금은 컴파일되지 않습니다. 귀하의 경우에는

처럼 전체 설정이 보일 것입니다 : 나는 당신, @drewish 근무 모르는

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'MACOSX_DEPLOYMENT_TARGET': '10.7', 

     'OTHER_CFLAGS': [ 
      "-std=c++11", 
      "-stdlib=libc++" 
     ], 
     }, 

     "sources": [ "package_src.cpp" ], 
    } 
    ] 
} 
+0

아, 네, 잘 작동합니다. 나는'-mmacosx-version-min = 10.7''을 전달하려고 시도하고 있었고, 기존의 10.5 플래그를 대체하는 대신에 그것을 연결했다. – drewish