#AstuceDeCode 11 : mettre des flags de compilation globaux et autres variables globales dans CMake

Nous avons vu dans un précédent article qu’on pouvait faire plein de trucs assez sympathiques avec CMake, pour tous ceux d’entre vous qui font du C et C++. Maintenant on va voir comment définir des flags de compilation par défaut.

L’intérêt de la manipulation est qu’on maîtrise totalement les flags de compilation qui seront utilisés. C’est particulièrement important si derrière vous utilisez un système de packaging comme RPM, sinon vous aurez les flags par défaut de ce dernier. Et ça peut faire mal. Je me suis ainsi retrouvé à avoir un comportement différent entre le programme que je compilais moi-même et celui compilé par RPM simplement à cause de ces flags, et pour déboguer, c’était festival.

Définition des flags de compilation

Le plus simple pour définir les flags est de créer un module CMake. Pour les flags C et C++ vous utiliserez le code suivant :


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic " CACHE INTERNAL "cmake_cxx_flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic " CACHE INTERNAL "cmake_c_flags")

set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -fPIC" CACHE INTERNAL "cmake_cxx_link_flags")
set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -fPIC" CACHE INTERNAL "cmake_c_link_flags")


La liste de flags détaillée ici est quelque peu arbitraire, mais ce n’est pas l’important. Il s’agit en fait des flags par défaut de RPM. Par contre ce qui compte sur ces lignes est le paramètre CACHE INTERNAL. Il permet en quelque sorte de définir des variables globales à vos programmes CMake, ce qui est nécessaire dès lors que vous appelez un module CMake avec une directive include. Derrière celle-ci vous pouvez mettre un nom quelconque, il suffit qu’il soit unique.

Variables globales à vos scripts

Vous pouvez bien évidemment ajouter vos propres variables de la même manière, toujours en utilisant le paramètre CACHE INTERNAL.

Cet article vous a plu ? Vous aimerez sûrement aussi :

Julien
Moi c’est Julien, ingénieur en informatique avec quelques années d’expérience. Je suis tombé dans la marmite étant petit, mon père avait acheté un Apple – avant même ma naissance (oui ça date !). Et maintenant je me passionne essentiellement pour tout ce qui est du monde Java et du système, les OS open source en particulier.

Au quotidien, je suis devops, bref je fais du dév, je discute avec les opérationnels, et je fais du conseil auprès des clients.

Son Twitter Son LinkedIn

gojul

View Comments

  • I do not even know how I stopped up here, however I thought this post used to be good.
    I don't recognize who you're however certainly you are going to a well-known blogger in case you aren't already.
    Cheers!

  • Does your blog have a contact page? I'm having a tough time locating it but, I'd like to shoot you an e-mail.
    I've got some ideas for your blog you might be interested in hearing.

    Either way, great blog and I look forward to seeing it improve over time.

  • hi!,I love your writing very much! proportion we keep in touch extra approximately your post on AOL?
    I require an expert in this space to resolve my problem. Maybe
    that is you! Taking a look forward to see you.

Recent Posts

Tout savoir sur la question d’agrément CIR/CII pour les freelances en informatique

Dans le cadre de leurs développements, les entreprises se tournent de plus en plus vers…

1 semaine ago

Les 20 langages de programmation à apprendre en 2024

La vie des informaticiens consiste à apprendre différents langages de programmation et technologies. Et si…

3 semaines ago

De développeur à manager à coach professionnel : portrait d’Eric

Dans cet épisode, partons à la rencontre d’Eric, l'un des cofondateurs de l’entreprise Hektore, une…

4 semaines ago

Classement QCM saison Printemps 2024 : Règlement et informations

La saison hiver des QCMs WeLoveDevs s'est terminée le 29 février, et c'est Manuvai Rehua…

2 mois ago

Résultat du baromètre de l’AFUP : Augmentation des salaires chez les hommes

Après trois mois d'enquête, du 18 septembre au 18 décembre, l'AFUP a publié son baromètre.…

2 mois ago

Manuvai Rehua est le Champion de la saison Hiver [QCM]

Il y a plusieurs informations aujourd'hui. La première c'est que c'est la fin de l'Hiver…

2 mois ago