2015-11-30 18 views
8

Sto cercando di installare una libreria esterna nel mio progetto C++ utilizzando Cmake. Voglio che il progetto Xcode venga prodotto con quella libreria. Nel mio terminale ho eseguito il seguente dalla cartella di compilazione:L'identificazione del compilatore CXX è sconosciuta: xcode

cmake -G Xcode .. 

e che mi dà il seguente errore:

-- 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. 

Sto usando compilatore 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 

Modifica: CMakeLists .txt file

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 anche:

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:

Questo problema si verifica quando directory sviluppatori Xcode-select stava indicando/Library/Developer/CommandLineTools, in cui è stato richiesto un XCode regolare completa (succede quando CLT sono installati dopo XCode).

ho trovato la soluzione a questo:

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

Dopo questo viene fatto, quando corro cmake -G Xcode .. ricevo altri errori:

-- 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 Sembra che l'SDK specificato dal sistema operativo è sbagliato.

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

Dovresti pubblicare il tuo 'CMakeLists.txt', e in particolare guardare la linea 6. –

+0

@ I'L'I: Ho apportato una modifica: aggiunto CMakeLists.txt – Whizzil

+0

Si sta utilizzando anche CMake homebrew, quindi i percorsi potrebbero essere espulsi (non uso homebrew). Gli altri errori che ottieni dovrebbero essere solo questione di inserire le informazioni giuste (target e sdk). –

risposta

2

L'errore che hai con l'SDK di solito può essere risolto cancellando la CMake costruire cache e aggiungendo quanto segue al CMakeLists.txt prima di progetto():

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}'.") 

Se si scopre che non è così risolvere il problema, quindi è necessario verificare che la versione di Xcode sia aggiornata e che l'SDK installato sia specificato. Generalmente Homebrew e Macports CMake dovrebbero avere l'ultima versione stabile di Xcode installata.

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

+0

Ha importanza in quale posto in un file aggiungo questa linea? L'ho aggiunto all'inizio di un file e il problema persiste. Inoltre, ho reinstallato Homebrew Cmake 15 minuti fa. – Whizzil

+0

dopo che 'set (LIBRARY_VERSION_FULL" $ {LIBRARY_VERSION}. $ {LIBRARY_VERSION_PATCH} ")' dovrebbe andare bene. –

+0

Questo è esattamente dove l'ho inserito, ma ancora lo stesso errore ... – Whizzil

3

Ho avuto la stessa uscita e potrebbe risolverlo accettando di licenza di Apple.

sudo xcodebuild -license accept 
0

ho avuto lo stesso problema e come detto in uno dei commenti che sembra essere dovuto al fatto che ho installato gli strumenti da riga di comando prima.

Ho risolto l'errore aprendo l'app Xcode, andando su Preferenze -> Posizioni e selezionando l'installazione Xcode dal menu a discesa per gli strumenti della riga di comando. Inizialmente era vuoto.

0

Ho avuto lo stesso problema, ma ho risolto con:

sudo xcode-select --reset 

Prima di fare quanto sopra, xcode-select -p riportato il percorso era /Library/Developer/CommandLineTools.

Dopo il ripristino, il percorso era /Applications/Xcode.app/Contents/Developer.

Problemi correlati