Peut CMake utiliser g++ pour compiler du C fichiers?
J'ai travaillé sur un projet où j'ai été en utilisant g++ pour compiler du code C dans les fichiers qui se terminent dans .c. La raison en est que je me suis dit que g++ a de meilleurs messages d'avertissement.
Je suis de commutation le processus de construction de ce projet à utiliser CMake. J'ai constaté que dans un premier CMake voulais utiliser gcc pour compiler du C fichiers. Cela n'a pas pu à cause de choses comme la déclaration de variables lors de l'utilisation du temps. J'ai donc essayé d'utiliser g++ pour compiler du C fichiers à l'aide du paramètre
set(CMAKE_C_COMPILER_INIT g++)
dans le CMakeLists.txt fichier. Mais cela entraîne le message d'erreur:
#error "The CMAKE_C_COMPILER is set to a C++ compiler"
J'ai été de renommer mon .c fichiers .rpc pour résoudre ce problème, comme cela semble être le moyen le plus facile pour moi de faire fonctionner les choses, et peut-être la meilleure façon trop. Mais je me demandais si il est possible de forcer CMake à utiliser g++ pour compiler du C fichiers.
Si vous êtes à la rédaction de C, puis compiler avec un compilateur C. C et C++ ne sont pas la même chose.
Vous avez dit " le Présent échoué à cause de choses comme la déclaration de variables lors de l'utilisation du temps'; cela sonne comme vous utilisez GCC en C89 mode, au lieu de C99 mode. Essayez d'ajouter
-std=c99
pour le compilateur C - en quelque sorte.merci pour les commentaires je vais être sûr de penser à ces suggestions.
OriginalL'auteur Gabriel Southern | 2011-10-07
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas ignorer le compilateur pour ce but. Si vous avez vraiment besoin de compiler vos C les fichiers C++, alors vous devriez enseigner cmake que vos fichiers appartiennent au langage C++:
aucune idée de la raison de l'application d'un seul fichier dans mon projet serait de faire de tous les fichiers du projet est compilé comme le C++ ? J'ai un tas de .c fichiers et je ne veux que l'un de la à être compilé comme le C++.
Je veux en fait que le symptôme, mais d'une manière définie... Pourquoi ne pas CMake avoir un moyen pour compiler tous .c les fichiers C++?
Ce n'est pas de résoudre ultérieure problèmes de liens pour les projets C++ lors de la conduite du processus de liaison par le pilote du compilateur. CMake ne savent pas à utiliser des bibliothèques C++ cours de lien, et elle tombe sur Solaris et certains anciens Linux.
OriginalL'auteur Andrey Kamaev
Si vous avez besoin de passer l'ensemble du projet, le mettre en projet directive:
OriginalL'auteur Victor Sergienko