2015-11-30 14 views
8

Cmakeを使用してC++プロジェクトに外部ライブラリをインストールしようとしています。私はそのライブラリでXcodeプロジェクトを作りたがっています。CXXコンパイラの識別情報が不明です。xcode

cmake -G Xcode .. 

をし、それは私に次のエラーを与える:私の端末では、私は、ビルドディレクトリから次のコマンドを実行し

-- The CXX compiler identification is unknown 
-- The C compiler identification is unknown 
CMake Error at CMakeLists.txt:6 (project): 
No CMAKE_CXX_COMPILER could be found. 

CMake Error at CMakeLists.txt:6 (project): 
    No CMAKE_C_COMPILER could be found. 

私はG ++コンパイラを使用しています:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
    Apple LLVM version 7.0.0 (clang-700.1.76) 
    Target: x86_64-apple-darwin14.5.0 
    Thread model: posix 

編集:CMakeLists .txtファイル

file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" PROJECT_VERSION_FULL) 
string(REGEX REPLACE "[\n\r]" "" PROJECT_VERSION_FULL "${PROJECT_VERSION_FULL}") 
string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+$" "\\1" PROJECT_VERSION_MAJOR "${PROJECT_VERSION_FULL}") 
string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+$" "\\1" PROJECT_VERSION_MINOR "${PROJECT_VERSION_FULL}") 
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)$" "\\1" PROJECT_VERSION_PATCH "${PROJECT_VERSION_FULL}") 
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") 
math(EXPR LIBRARY_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") 
set(LIBRARY_VERSION_MINOR "${PROJECT_VERSION_MINOR}") 
set(LIBRARY_VERSION_PATCH "${PROJECT_VERSION_PATCH}") 
set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}") 
set(LIBRARY_VERSION_FULL "${LIBRARY_VERSION}.${LIBRARY_VERSION_PATCH}") 


option(CODE_COVERAGE "Set ON to add code coverage compile options" OFF) 
option(GENERATE_DOC "Set ON to genrate doxygen API reference in build/doc directory" OFF) 

# C++11 compiler Check 
if(NOT CMAKE_CXX_COMPILER_VERSION) # work around for cmake versions smaller than 2.8.10 
    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) 
endif() 
if(CMAKE_CXX_COMPILER MATCHES ".*clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") 
     set(CMAKE_COMPILER_IS_CLANGXX 1) 
endif() 
if((CMAKE_COMPILER_IS_GNUCXX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.7) OR 
    (CMAKE_COMPILER_IS_CLANGXX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.2)) 
    message(FATAL_ERROR "Your C++ compiler does not support C++11. Please install g++ 4.7 (or greater) or clang 3.2 (or greater)") 
else() 
    message(STATUS "Compiler is recent enough to support C++11.") 
endif() 

if(CMAKE_COMPILER_IS_GNUCXX) 
    append_cxx_compiler_flags("-std=c++11 -Wall -Wextra -DNDEBUG" "GCC" CMAKE_CXX_FLAGS) 
    append_cxx_compiler_flags("-O3 -ffast-math -funroll-loops" "GCC" CMAKE_CXX_OPT_FLAGS) 
    if (CODE_COVERAGE) 
     append_cxx_compiler_flags("-g -fprofile-arcs -ftest-coverage -lgcov" "GCC" CMAKE_CXX_FLAGS) 
    endif() 

else() 
    if(MSVC) 
     append_cxx_compiler_flags("/EHsc" "MSVC" CMAKE_CXX_FLAGS) 
     append_cxx_compiler_flags("/Od" "MSVC" CMAKE_CXX_FLAGS_DEBUG) 
     append_cxx_compiler_flags("/Ox" "MSVC" CMAKE_CXX_FLAGS_RELEASE) 
     set(vars CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) 
     foreach(var ${vars}) 
      string(REPLACE "/MD" "-MT" ${var} "${${var}}") 
     endforeach(var) 

     add_definitions("/DMSVC_COMPILER") 
    else() 
     append_cxx_compiler_flags("-std=c++11 -DNDEBUG" "CLANG" CMAKE_CXX_FLAGS) 
     append_cxx_compiler_flags("-stdlib=libc++" "CLANG" CMAKE_CXX_FLAGS) 
     append_cxx_compiler_flags("-O3 -ffast-math -funroll-loops" "CLANG" CMAKE_CXX_OPT_FLAGS) 
    endif() 
endif() 

またCMakeEdit.log:

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. 
Compiler: 
Build flags: 
Id flags: 

The output was: 
1 
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance 


Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. 
Compiler: 
Build flags: 
Id flags: 

The output was: 
1 
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance 

EDIT:Xcodeの選択、開発者のディレクトリは/ライブラリ/開発/ CommandLineToolsを指したとき、完全な正規のXCodeを必要としたとき

この問題は、発生したが(たまたまCLTはXCodeの後にインストールされます)。

私は解決策はこれであることが判明している:私はcmake -G Xcode ..を実行したときに、私は他のエラーを取得し、これが行われた後

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 

-- The CXX compiler identification is AppleClang 7.0.0.7000176 
-- The C compiler identification is AppleClang 7.0.0.7000176 
CMake Error at /usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/Platform/Darwin.cmake:76 (message): 
    CMAKE_OSX_DEPLOYMENT_TARGET is '10.10' but CMAKE_OSX_SYSROOT: 

    "" 

    is not set to a MacOSX SDK with a recognized version. Either set 
    CMAKE_OSX_SYSROOT to a valid SDK or set CMAKE_OSX_DEPLOYMENT_TARGET to 
    empty. 
Call Stack (most recent call first): 
    /usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/CMakeSystemSpecificInformation.cmake:36 (include) 
    CMakeLists.txt:6 (project) 

EDIT 2 は、SDKのように見えますOSによって指定されたものは間違っています。

あなたがSDKを持っているエラーは通常)(CMakeのキャッシュを構築クリアし、プロジェクトの前に、あなたの CMakeLists.txtに以下を追加することで解決することができる
CMAKE_OSX_DEPLOYMENT_TARGET is '10.10' but the matching SDK does not exist 
    at: 

    "/Applications/DEV/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" 

    Instead using SDK: 

    "/Applications/DEV/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk". 
Call Stack (most recent call first): 
    /usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake:18 (include) 
    CMakeLists.txt:6 (project) 


-- The CXX compiler identification is AppleClang 7.0.0.7000176 
-- The C compiler identification is AppleClang 7.0.0.7000176 
CMake Error at /usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/Platform/Darwin.cmake:76 (message): 
    CMAKE_OSX_DEPLOYMENT_TARGET is '10.10' but CMAKE_OSX_SYSROOT: 

    "" 

    is not set to a MacOSX SDK with a recognized version. Either set 
    CMAKE_OSX_SYSROOT to a valid SDK or set CMAKE_OSX_DEPLOYMENT_TARGET to 
    empty. 
Call Stack (most recent call first): 
    /usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/CMakeSystemSpecificInformation.cmake:36 (include) 
    CMakeLists.txt:6 (project) 
+0

'CMakeLists.txt'を投稿し、特に6行目を見てください。 –

+0

@I'L'I:編集しました:CMakeLists.txtを加えました – Whizzil

+0

あなたは自作のCMakeを使っていますので、あなたのパスが捨てられるかもしれません(私は自作しません)。あなたが得ている他のエラーは、そこに正しい情報(ターゲットとsdk)を入れるだけの問題でなければなりません。 –

答えて

2

SET(MACOSX_DEPLOYMENT_TARGET ${DARWIN_MAJOR_SDK_VERSION}.${DARWIN_MINOR_SDK_VERSION}) 
SET(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}") 
MESSAGE("Setting MACOSX_DEPLOYMENT_TARGET to '${MACOSX_DEPLOYMENT_TARGET}'.") 

あなたはそれがいないことが判明した場合問題を解決したら、現在のXcodeのバージョンを確認し、SDKがインストールされていることを確認してください。一般的に、HomebrewとMacports CMakeの両方には、最新のXcodeの安定したビルドがインストールされている必要があります。

https://github.com/Homebrew/homebrew/issues/23074

+0

ファイルのどの場所でこの行を追加するかは重要ですか?ファイルの先頭に追加しても問題は解決しません。また、私は15分前にHomebrew Cmakeを再インストールしました。 'set(LIBRARY_VERSION_FULL" $ {LIBRARY_VERSION}。$ {LIBRARY_VERSION_PATCH} ")'の後の – Whizzil

+0

はうまくいくはずです。 –

+0

私はそれを置いた場所は正確ですが、それでも同じエラーです... – Whizzil

3

私は同じ出力を持っていたし、リンゴのライセンスに同意することによってそれを解決することができます。

sudo xcodebuild -license accept 
0

私は同じ問題を持っていたとのコメント1で述べたように、私が最初のコマンドラインツールをインストールしているという事実に起因すると思われます。

Xcodeアプリケーションを開き、環境設定 - >場所に行き、コマンドラインツールのドロップダウンからXcodeインストールを選択して解決しました。それは最初は空白だった。

0

私は同じ問題を抱えていたが、私はそれを解決:上記を行う前に

sudo xcode-select --reset 

xcode-select -pはパスが/Library/Developer/CommandLineToolsだったと報告しました。

リセット後、パスは/Applications/Xcode.app/Contents/Developerです。

関連する問題