2013-09-07 23 views
5

Próbuję więc użyć regexu C++ 2011 w domu na moim Macu. Koduję przy użyciu Eclipse, z odrobiną brzęczenia przy kompilacji z terminala.C++ nie może znaleźć regex nawet przy -std = C++ 11 macOSX

To co się dzieje, gdy próbuję skompilować mój kod:

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

Dzieje się tak, gdy używam -std = C++ 11 flagę czy nie.

Oto mój C++ -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 

Teraz znalazłem na moim komputerze, co wydaje się być plik chcę zawrzeć w moim projekcie w „usr/lib/C++/v1/regex ". Ale to nie znajduje się w plikach włączających w środowisku Eclipse i nie mam pojęcia, jak sprawić, by mój kompilator je znalazł.

Jak mogę dodać to do ścieżek dołączania, jeśli to jest to, co muszę zrobić, aby to działało?

Aktualizacja:

próbował

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

co skutkuje błędem

Undefined symbols for architecture x86_64: 

po co wydaje się być odniesienie do każdej linii w kodzie, takiego jak

"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 

Odpowiedz

7

Dodaj -stdlib=libc++ oprócz -std=c++11. libC++ jest standardową implementacją biblioteki obsługującą C++ 11. Domyślnie używa libstdC++, który nie obsługuje C++ 11. Całe polecenie powinno wyglądać następująco:

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