2013-09-07 47 views
5

Vì vậy, tôi đang cố gắng sử dụng regex C++ 2011 ở nhà trên máy Mac của mình. Tôi đang mã hóa bằng cách sử dụng Eclipse, với một chút dabbling với biên dịch từ các thiết bị đầu cuối.C++ không thể tìm thấy regex ngay cả với -std = C++ 11 macOSX

Đây là những gì sẽ xảy ra khi tôi cố gắng để biên dịch mã của tôi:

$ c++ -std=c++11 -o a *.cpp 
scanner.cpp:11:10: fatal error: 'regex' file not found 
#include <regex> // to use this need to use -std=c++11 flag in compiler 
     ^
1 error generated. 

Điều này xảy ra nếu tôi sử dụng -std = C++ 11 cờ hay không.

Dưới đây là c của tôi ++ -v:

$ c++ -v 
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) 
Target: x86_64-apple-darwin12.4.0 
Thread model: posix 

Bây giờ tôi đã tìm thấy trên máy tính của tôi những gì có vẻ là file tôi muốn bao gồm trong dự án của tôi tại "usr/lib/C++/v1/regex ". Nhưng đó không phải là trong các tập tin bao gồm trong nhật thực, và tôi không có ý tưởng làm thế nào để làm cho trình biên dịch của tôi tìm thấy nó.

Làm cách nào tôi có thể thêm điều này vào các đường dẫn bao gồm, nếu đó là những gì tôi cần làm để thực hiện công việc này?

Cập nhật:

thử

$ c++ -I/usr/lib/c++/v1 -o a *.cpp 

mà kết quả trong các lỗi

Undefined symbols for architecture x86_64: 

theo những gì dường như là một tài liệu tham khảo cho mọi dòng trong mã của tôi, chẳng hạn như

"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from: 
     std::__1::basic_regex<char, std::__1::regex_traits<char> >::__start_matching_list(bool) in scanner-LSmxM4.o 

Trả lời

7

Thêm -stdlib=libc++ ngoài -std=c++11. libC++ là thư viện chuẩn thực hiện hỗ trợ C++ 11. Theo mặc định, nó sử dụng libstdC++ không hỗ trợ C++ 11. Toàn bộ lệnh sẽ trông giống như:

c++ -std=c++11 -stdlib=libc++ -o output source.cpp