12
votes

Comment définir des drapeaux de compilateur à la compilation à l'aide de CMAKE?

add_definitions ajoute une définition qui est fixée au moment où la cmake (non la marque) est exécutée. Comment les définir quand faire (non cmake) est exécuté? La valeur de la définition sera une sortie d'une commande personnalisée.


0 commentaires

3 Réponses :


-4
votes

Voici un exemple de fichier de fabrication: xxx

remarque comment le drapeau cflags est défini. Commentant l'autre selon si vous faites un débogage ou une version de version.

L'échantillon ci-dessus consiste à créer un fichier de mon tutoriel pour créer un exécutable appelé myapp qui compose de mysource.c , myRoutines1.c et myRoutines2.c . Et cela montre comment faire est suffisamment intelligent pour construire un exécutable sans recompilation.

Note Le makefile a une orientation Unix / Linux et est très strict sur les onglets. / espaces qui ne se présentent pas dans l'exemple ci-dessus!

espère que cela aide, Meilleures salutations, Tom.


4 commentaires

Je ne comprends pas pourquoi cela a été découvert que l'OP a clairement indiqué "Comment les définir quand faire (non cmake) est exécuté?" En d'autres termes, comment les définir dans un maquillage, c'était ma compréhension? Corrigez-moi si j'ai mal compris?


Je ne suis pas la puissance, et c'est un peu tard ... mais ... j'imagine que l'Op (comme moi-même) recherche une commande CMAKE qui implémente cette logique dans les maquillages générés automatiquement. Modification manuelle Les maquillages ne sont pas une option.


@Mattb: Oh ... j'ai oublié celui-ci ... un peu trop tard !!! Je sais qu'il y a une gui-guise de cmake..cies pas une grande partie d'une réponse, mais plus d'un point dans la direction de voir s'il y a une option sur l'interface graphique de la cmake pour faire cela pour vous et voir ce qu'il génère ...


Merci, tom. J'ai trouvé ma solution via le lien dans l'autre réponse ici ( Stackoverflow.com/questions/1438535/... ). Je pensais juste que je vous déposerais une note sur la raison pour laquelle je pensais que quelqu'un ait peut-être évolué. Bien sûr, maintenant, je vois votre commentaire sur l'autre réponse réciproque, alors vous saviez déjà. Tant pis...



-5
votes

Je ne suis pas sûr de comprendre la question, mais ...

Peut-être que vous pourriez peut-être utiliser une macro supplémentaire pour fournir des drapeaux de compilateur C de ligne de commande C, par exemple: P>

CFLAGS=  <whatever>
CFLAGS2= #nothing  

.c.o:
    $(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<


2 commentaires

@Loadmaster: J'ai fait la même chose ici, mais j'ai été retrouvé comme je ne comprends pas la question de l'OP - il a dit «quand faire (non cmake) est exécuté?» ...


La question concerne la cmake. Cmake génère un maquillage sur la plate-forme Linux, donc je ne peux donc pas la modifier directement.



3
votes