2011-10-24 32 views
17

Tôi đang sử dụng CMake để tạo tệp dự án cho Xcode 4.2 trên OSX Lion và tôi đang sử dụng một số tính năng C++ 0x trong LLVM như nullptr và tự động . Để sử dụng các, Xcode đòi hỏi thiết lập 2 dự án được thiết lập:Sử dụng C++ 0x trong dự án Xcode 4.2 qua CMake

C++ Ngôn ngữ Phương ngữ thiết lập để C++ 0x [-std = C++ 0x]

Thư viện chuẩn C++ thiết lập để libC++ (LLVM C++ thư viện chuẩn với hỗ trợ C++ '0X) ​​

Hiện tại mỗi khi tôi tạo dự án Xcode, tôi phải vào và điều chỉnh thủ công các cài đặt này.

Có cách nào để chỉ định các cài đặt này trong CMake không?

Cảm ơn

+0

Xin chào, bạn có tìm thấy giải pháp cho điều này không? bất kể trình biên dịch nào tôi chỉ định cho Cmake, dự án xcode 4.2 luôn chọn trình biên dịch mặc định. – moka

Trả lời

23

sau khi đào vào việc này cho một littl e, đây là các lệnh để đặt các cài đặt xcode thích hợp:

set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") 
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x") 
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -g -Wall") 

Tôi nghĩ rằng việc đặt cờ c + + là thừa, vì vậy nó cũng có thể hoạt động mà không có dòng cuối cùng.

hy vọng điều đó sẽ hữu ích!

+1

Trình biên dịch không được chọn cho tôi. Nó vẫn sử dụng "C++" mặc định –

+2

Bạn có thực sự có nghĩa là 'CMAKE_C_FLAGS' ở lệnh' set' thứ tư không? – McLeary

+0

không, cảm ơn bạn đã sửa :) – moka

1

Người đầu tiên bạn có thể thay đổi các thuộc tính CMAKE_CXX_FLAGS và thêm nó: SET (CMAKE_CXX_FLAGS "$ {} CMAKE_C_FLAGS -std = C++ 0x")

Đối với việc lựa chọn thay vì GCC Clang bạn sẽ phải sử dụng một cái gì đó như: Switching between GCC and Clang/LLVM using CMake

điều đó sẽ ghi đè lên các giá trị Clang mặc định để sử dụng GCC

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