Suite à le même problème sur Mojave.
Après avoir mis à niveau vers macOS Catalina, aucun des en-têtes C ne peut être trouvé dans /usr/include
. La raison de ceci peut être trouvée dans les notes de version de Xcode 10 (version précédente) :
Le package des Outils de ligne de commande installe les en-têtes du système macOS à l'intérieur du SDK macOS. Les logiciels qui compilent avec les outils installés rechercheront les en-têtes à l'intérieur du SDK macOS fourni soit par Xcode à :
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
ou les Outils de ligne de commande à :
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
[...] En tant que solution de contournement, un package supplémentaire est fourni qui installera les en-têtes sur le système de base. Dans une future version, ce package ne sera plus fourni. [...]
(Voir le lien vers la question ci-dessus pour les détails sur cette solution de contournement suggérée.)
Apparemment, Apple a tenu sa menace avec Xcode 11. Comment peut-on installer les en-têtes C dans /usr/include
sur macOS Catalina en utilisant Xcode 11?
Contexte : La liaison python de clang recherche les fichiers d'en-tête dans /usr/include
par défaut. Selon la réponse de kkurian et le commentaire que j'ai fait (en réponse à cette question), il existe plusieurs façons de contrôler ce comportement, si nécessaire.
Question associée : Impossible de compiler un programme C sur un Mac après la mise à niveau vers Mojave.
0 votes
Tu ne le fais pas - ton système de construction doit pointer vers le bon chemin
1 votes
Malheureusement, les liaisons python pour clang ne vous laissent pas beaucoup de choix en la matière...
1 votes
Il semble que cela devrait être signalé comme un bug à clang alors
0 votes
Le problème particulier de l'utilisation des liaisons python dans macOS Catalina peut être résolu en ajoutant le drapeau du compilateur
-isysroot [...]
à l'appel decindex.Index.parse
, où[...]
est la valeur de retour dexcrun --show-sdk-path
.0 votes
@mkl Pouvez-vous fournir plus de détails? J'essaie de construire une bibliothèque numérique pour Python et j'ai ce problème, mais ... que voulez-vous dire par "l'appel
cindex.Index.parse
"? Où se trouve cet appel, et votre correction peut-elle être intégrée à une configuration Python?0 votes
@RobertP.Goldman Je ne suis pas sûr que ce soit un malentendu. Si vous utilisez le package python clang, alors vous l'utilisez probablement pour obtenir l'AST d'un fichier C++. Cela signifie appeler
clang.cindex.Index.parse
. Le site web d'Eli Bendersky a un article très utile à ce sujet : Parsing C++ in Python with Clang. Pour résoudre le problème décrit ci-dessus, ajoutez le drapeau du compilateur-isysroot
à l'appel deparse
.0 votes
@RobertP.Goldman Mais à en juger par votre commentaire, je ne pense pas que cela ait grand-chose à voir avec votre problème.