2013-09-07 7 views
5

Quindi sto cercando di usare la regex C++ 2011 a casa sul mio Mac. Sto codificando usando Eclipse, con un po 'di dilettevole con la compilazione dal terminale.C++ non riesce a trovare espressioni regolari anche con -std = C++ 11 macOSX

Questo è ciò che accade quando provo a compilare il mio codice:

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

Questo accade se uso il -std = C++ 11 bandiera o no.

Ecco la mia 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 

Ora che ho trovato sul mio computer quello che sembra essere il file voglio includere nel mio progetto a "/ lib/C++/v1/regex usr ". Ma non è incluso nei file di inclusione in eclissi e non ho idea di come farlo trovare al mio compilatore.

Come posso aggiungere questo ai percorsi di inclusione, se è quello che devo fare per farlo funzionare?

Aggiornamento:

cercato

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

che genera l'errore

Undefined symbols for architecture x86_64: 

seguito quello che sembra essere un riferimento a ogni riga nel mio codice, come ad esempio

"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 

risposta

7

Aggiungi -stdlib=libc++ oltre a -std=c++11. libC++ è l'implementazione della libreria standard che supporta C++ 11. Di default usa libstdC++ che non supporta C++ 11. L'intero comando dovrebbe essere simile a:

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