2017-10-06 8 views
1

J'ai un projet linux que je veux porter sur Windows. Sous Linux, je ne mis en place mon makefile pour exécuter x86_64-w64-mingw32-g++ quand je n'appelle make ARCH=winÉviter les collisions d'en-tête lors de la compilation croisée

Le problème est que certains en-têtes dont j'ai besoin (tcl.h et amis) sont situés sous '/usr/include' et si je passe ce répertoire avec le drapeau -I I obtiendra une collision d'en-tête pour les en-têtes comme stdlib.h qui sont évidemment différents pour les fenêtres.

Existe-t-il un moyen de contourner cela en plus de copier les en-têtes tcl nécessaires dans un autre emplacement?

Répondre

0

Il existe un ordre séquentiel dans lequel le compilateur recherche les fichiers d'en-tête. Mais non, vous ne pouvez pas choisir l'emplacement du fichier d'en-tête.

Une solution que vous pouvez essayer ce problème est d'utiliser -I/usr et patcher votre projet avec l'utilitaire sed pour convertir les en-têtes nécessaires comme <tcl.h>-<include/tcl.h>. En plus de cela, vous pouvez utiliser le préprocesseur pour éviter les correctifs à chaque fois que votre projet.