Bonjour

J'ai commencé à écrire mon premier CMakeLists pour mon projet actuel. Je ne connaissais CMake que pour compiler quelques librairies, mais n'avais jamais encore fait mes propres scripts.
Je développe avec Code::Blocks et j'ai voulu que le sélecteur Build target, dans la barre d'outils continue de me fournir les choix Debug et Release, qui n'apparaissaient plus avec mon script. J'ai réussi à arrangé ça, le répertoire de destination du programme et le nom du programme après compilation correspondent bien à ce que je veux pour chaque choix.

Mon problème est que mes flags de compilations ne respectent pas les choix sélectionnés. Après plusieurs recherches sur le net et plusieurs essais, tout ce que je peux dire est qu'il semble que peu importe ce que je choisis sur le sélecteur de Code::Blocks, c'est la variable CMAKE_BUILD_TYPE de CMake qui prime et que ce dernier n'est pas modifié par la sélection du mode de compilation choisis via C::B.
J'aimerais, si c'est possible, pouvoir écrire dans mon script CMakeLists.txt quelque chose qui permet au sélecteur Build target de C::B d'indiquer comment la compilation doit s'effectuer. Un truc dans ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Release / Debug flags
si(Release est sélectionné)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
sinon
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g3")
 
ou
 
si(Release est sélectionné)
  set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build (Debug or Release)" FORCE)
sinon
  set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build (Debug or Release)" FORCE)
 
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g3")
Merci de votre aide