add_definitions ajoute une définition qui est fixée au moment où cmake (not make) est exécuté. Comment les définir quand make (pas cmake) est exécuté? La valeur de la définition sera une sortie d'une commande personnalisée.Comment définir les indicateurs du compilateur lors de la compilation en utilisant CMake?
Répondre
Voici un exemple d'un fichier de marque:
.SUFFIXES: .c.o CC = cc INCLUDE = -I/usr/include -I/usr/sys/include # Comment out one or the other, mutually exclusive CFLAGS = -g # Debugging info #CFLAGS = -O2 # Optimize code LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # Debugging libs #LIBS = -L/usr/lib # Release FILES = mysource.o myroutines1.o myroutines2.o APP = myapp .c.o: $(CC) $(INCLUDE) $(CFLAGS) -c $< all : $(APP) $(APP) : $(FILES) $(CC) -o [email protected] $(FILES) $(LIBS) $(CFLAGS) clobber : clean mrproper clean: rm -rf $(FILES) mrproper: rm -rf $(APP)
Remarquez comment est défini le drapeau CFLAGS
. Commentez l'autre selon que vous faites un débogage ou une version validée ..
L'exemple ci-dessus est un fichier de faire de mon tutoriel pour la construction d'un exécutable appelé myapp
qui compose de mysource.c
, myroutines1.c
et myroutines2.c
. Et il montre comment faire est assez intelligent pour construire un exécutable sans recompilation.
Note Le fichier makefile a une orientation unix/linux et est très strict sur les onglets/espaces qui n'apparaissent pas dans l'exemple ci-dessus!
Espérons que cela aide, Cordialement, Tom.
Je ne suis pas sûr que je comprends la question, mais ...
Peut-être que vous pourriez utiliser une macro supplémentaire pour fournir la ligne de commande C drapeaux du compilateur, par exemple:
CFLAGS= <whatever>
CFLAGS2= #nothing
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<
Ensuite, lorsque vous exécutez la commande make
, fournissez un argument de ligne de commande "CFLAGS2=xxx"
, qui remplace le paramètre par défaut dans le fichier makefile.
Mise à jour
Eh oui, je ne comprenais pas la question de l'OP. Alors, veuillez ne pas tenir compte.
@Loadmaster: J'ai fait la même chose ici mais je suis tombé en panne car je ne comprends pas la question de l'OP - il a dit 'quand make (pas cmake) est exécuté?' ... – t0mm13b
. CMake génère un makefile sur la plate-forme Linux, donc je ne peux pas le modifier directement. –
@Lukasz Lew: Ahh ... pas étonnant ... je suis downvoted ... lol ... – t0mm13b
Vous trouverez peut-être quelques trucs utiles ici:? Comment les définir quand faire (non cmake) est exécuté 'How to run a command at compile time within Makefile generated by CMake?
- 1. Indicateurs de compilateur Objective-C
- 2. cmake - Comment définir différentes variables pour le compilateur Intel
- 3. Indicateurs de compilateur spécifiques pour des fichiers spécifiques dans Xcode
- 4. Comment remplacer les indicateurs de compilation de perl lors de la construction de modules?
- 5. Problème lors de la compilation de libpng (& zlib) en utilisant le compilateur armcc de RVCT 4.0
- 6. Comment afficher les dépendances de compilation depuis CMake ou make?
- 7. La compilation du compilateur externe inclut
- 8. Erreur du compilateur - uniquement lors de la compilation à partir de la ligne de commande
- 9. compilateur IAR MSP430 erreur interne lors de la compilation
- 10. erreur de compilation CMake .. (Commande inconnue CMake "QT4_WRAP_UI")
- 11. CXX_FLAGS conditionnel utilisant cmake basé sur le compilateur?
- 12. Erreur de compilateur interne lors de la compilation du code Android natif
- 13. Comment définir ce drapeau de compilation?
- 14. Une erreur lors de la compilation en utilisant curlpp
- 15. Comment puis-je utiliser boost.wave comme préprocesseur en utilisant cmake
- 16. Comment vérifier TR1 lors de la compilation?
- 17. Comment éviter les avertissements du compilateur lors de la conversion de valeurs enum en entiers?
- 18. directive du compilateur pour la compilation sur différentes plates-formes
- 19. Cmake: comment forcer, y compris plus d'un en-tête
- 20. Compilation conditionnelle selon la version du compilateur VC++
- 21. Est-il possible de dé-définir les paramètres CMake Xcode?
- 22. Problème lors de la compilation du fichier d'en-tête auto-créé en utilisant Dev-C++?
- 23. Affichage du code étendu du compilateur - C++
- 24. Comportement bizarre à la compilation lors de la tentative d'utilisation du type primitif dans les génériques
- 25. CMake, Qt, gcc et les en-têtes précompilés
- 26. Optimisation du compilateur pour les applications iPhone
- 27. CMake: comment ajouter des drapeaux de compilateur au compilateur non-par défaut
- 28. Que signifie cette instruction de compilation du compilateur?
- 29. Puis-je déterminer les indicateurs de compilateur/éditeur de liens utilisés pour créer une bibliothèque partagée binaire uniquement?
- 30. Erreur lors de la compilation
Ne pas comprendre pourquoi cela a été downvoted comme OP clairement indiqué en d'autres termes, comment les définir dans un makefile, c'était ma compréhension? Corrigez-moi si j'ai mal compris? – t0mm13b
Je ne suis pas l'OP, et c'est un peu en retard ... mais ... j'imagine que l'OP (comme moi) est à la recherche d'une commande CMake qui implémente cette logique dans les Makefiles générés automatiquement. L'édition manuelle de Makefiles n'est pas une option. –
@MattB: Oh ... j'ai oublié celui-là ... un peu trop tard !!! Je sais qu'il y a une interface graphique CMake ... pas beaucoup de réponse mais plus d'un point dans la direction pour voir s'il y a une option sur l'interface graphique CMake pour le faire pour vous et voir ce qu'elle génère ... – t0mm13b