Je dois écrire un programme utilisant la bibliothèque de systèmes de fichiers C++17
(expérimentale), mais clang
sur mon Mac (macOS 10.12.03) ne semble pas avoir l'en-tête de système de fichiers inclus.
Comme je suis obligé d'utiliser le C++17
, je ne peux pas utiliser d'alternative comme la bibliothèque Boost
.
Lorsque j'essaie de compiler un exemple de programme qui inclut uniquement le système de fichiers et iostream
(et écrit dans cout
)
#include <filesystem>
#include <iostream>
using namespace std;
int main(){
cout << "test" << endl;
}
Je reçois le message d'erreur suivant:
>clang test.cpp -std=c++1z
test.cpp:2:10: fatal error: 'filesystem' file not found
#include <filesystem>
^
1 error generated.
Lorsque j'essaie la même chose avec GCC 6.3 (installé via homebrew), je reçois:
>gcc-6 test.cpp -std=c++17
test.cpp:2:22: fatal error: filesystem: No such file or directory
#include <filesystem>
^
compilation terminated.
J'ai aussi essayé d'utiliser experimental/filesystem à la place, qui compile avec gcc
mais semble essayer de compiler pour iOS, ce qui conduit à une autre erreur qui semble être liée à iostream
.
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccd5QiVt.o
"std::ios_base::Init::~Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccd5QiVt.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
La version de mon clang est:
>clang --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-Apple-darwin16.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Je suis reconnaissant pour toute contribution utile, car je n'ai rien trouvé qui résolve mon problème jusqu'à présent (même si j'aurais peut-être cherché les mauvais termes).
Si vous avez besoin de plus d'informations, je les fournirai volontiers, mais j'espère avoir tout inclus.
Libc ++, qui est la bibliothèque standard C++ sous OS X, n'a pas encore déplacé <experimental/filesystem>
vers <filesystem>
car la spécification n'est pas stable.
Espérons que <filesystem>
fera partie de la version 6.0 de Clang. (EDIT: Nous avons manqué 5.0)
En réponse à Max Raskin: J'ai installé Xcode 10 Beta 4 à partir du 17 juillet 2018 et cette version ne comporte pas "#include <experimental/système de fichiers>" ou "#include <système de fichiers>".
Les notes de publication ne mentionnent pas non plus libc ++ 17 <système de fichiers>. Les notes de publication do mentionnent que les éléments suivants figurent dans Xcode 10: <tout>, <facultatif> et <variante>.
Exemple d'emplacement de fichier d'inclusion:
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental
Y compris vous obtient les déclarations, mais à Obtenez les définitions que vous devez également lier avec -lstdc ++ fs (pour libstdc ++) ou je ne sais pas (pour libc ++). Si quelqu'un sait, peut-être qu'ils pourrait mettre à jour cette réponse?
Pour libc ++, vous devez créer un lien avec -lc++experimental
Xcode 9.4 installé - non
mais homebrew est venu à la rescousse avec LVM 6
mise à jour de la bière brew install llvm
et avec un changement dans PATH, j'étais absent.
Si quelqu'un est toujours intéressé, Xcode 10 Beta est livré avec libc ++ avec un système de fichiers expérimental