2015-11-30 31 views
8

Tôi đang cố gắng cài đặt thư viện bên ngoài vào dự án C++ của mình bằng cách sử dụng Cmake. Tôi muốn dự án Xcode được sản xuất với thư viện đó. Trong thiết bị đầu cuối của tôi chạy sau từ việc xây dựng thư mục:Nhận diện trình biên dịch CXX không xác định: xcode

cmake -G Xcode .. 

và đó mang lại cho tôi những lỗi sau đây:

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

Tôi đang sử dụng g ++ biên dịch:

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 

Edit: 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() 

Cũng 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:

Vấn đề này xảy ra khi thư mục nhà phát triển xcode-chọn đã được trỏ đến/Library/Developer/CommandLineTools, khi một XCode thường xuyên đầy đủ được yêu cầu (xảy ra khi CLT được cài đặt sau XCode).

Tôi đã tìm thấy giải pháp cho là thế này:

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

Sau này được thực hiện, khi tôi chạy cmake -G Xcode .. tôi nhận được các lỗi khác:

-- 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 Hình như SDK được chỉ định bởi hệ điều hành là sai.

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

Bạn nên đăng 'CMakeLists.txt' và nhìn vào dòng 6 nói riêng. –

+0

@ I'L'I: Tôi đã chỉnh sửa: thêm CMakeLists.txt – Whizzil

+0

Bạn cũng đang sử dụng CMake homebrew, vì vậy đường dẫn của bạn có thể bị vứt bỏ (tôi không sử dụng homebrew). Các lỗi khác bạn đang nhận được chỉ là vấn đề đặt thông tin phù hợp trong đó (mục tiêu và sdk). –

Trả lời

2

Các lỗi mà bạn có với SDK thường có thể được giải quyết bằng cách xóa các CMake xây dựng bộ nhớ cache và thêm dòng sau vào bạn CMakeLists.txt trước khi dự án():

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

Nếu bạn thấy rằng không giải quyết vấn đề sau đó bạn nên kiểm tra phiên bản của Xcode là hiện tại và đã cài đặt SDK bạn đang chỉ định. Nói chung Homebrew và Macports CMake cả hai nên có bản dựng Xcode ổn định mới nhất được cài đặt.

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

+0

Có quan trọng ở vị trí nào trong tệp tôi thêm dòng này không? Tôi đã thêm nó vào đầu tệp và sự cố vẫn tiếp diễn. Ngoài ra, tôi đã cài đặt lại Homebrew Cmake cách đây 15 phút. – Whizzil

+0

sau 'bộ (LIBRARY_VERSION_FULL" $ {LIBRARY_VERSION}. $ {LIBRARY_VERSION_PATCH} ")' sẽ ổn. –

+0

Thats chính xác nơi tôi đặt nó, nhưng vẫn cùng một lỗi ... – Whizzil

3

tôi đã có đầu ra tương tự và có thể giải quyết nó bằng cách đồng ý cấp giấy phép táo.

sudo xcodebuild -license accept 
0

Tôi gặp vấn đề tương tự và được đề cập trong một trong các nhận xét có vẻ như là do tôi đã cài đặt các công cụ dòng lệnh trước.

Tôi đã giải quyết nó bằng cách mở ứng dụng Xcode, chuyển tới Tùy chọn -> Vị trí và chọn cài đặt Xcode từ trình đơn thả xuống cho Công cụ dòng lệnh. Ban đầu nó trống.

0

tôi đã cùng một vấn đề, nhưng tôi giải quyết nó với:

sudo xcode-select --reset 

Trước khi làm việc trên, báo cáo xcode-select -p con đường đã /Library/Developer/CommandLineTools.

Sau khi đặt lại, đường dẫn là /Applications/Xcode.app/Contents/Developer.

Các vấn đề liên quan