Je suppose que la question du jour est “quel” compilateur c ++ est la valeur par défaut sur mac?
Si je fais xcrun -find c++
cela dit que c’est dans /Applications/Xcode.app/etc...
Lorsque je recherche le répertoire Xcode pour tr1/unordered_map
, il est là.
Donc je suis confus. Pourquoi est-ce que je reçois une erreur de construction qui dit fatal error: 'tr1/unordered_map' file not found
?
Réponse courte: appelez clang ++ avec -stdlib=libstdc++
, et les en-têtes tr1
seront présents.
Réponse longue: La raison de votre erreur et des deux ensembles d’inclusions C ++ est que macOS / Xcode comporte deux bibliothèques standard C ++ différentes que vous pouvez créer: une ancienne GNU libstdc++
et la nouvelle et moderne LLVM libc++
.
Depuis macOS 10.12 Sierra, la valeur par défaut est maintenant libc++
et libstdc++
est obsolète. libstdc++
est assez ancien, v4.2.1, et est antérieur à C ++ 11 (d’où les en-têtes tr1
). Si vous comptez utiliser ce code à long terme, cela vaut la peine de le rendre au moins compatible avec C ++ 11 (c’est-à-dire #include
)