Maison >développement back-end >C++ >Comment ajouter des indicateurs de compilateur et de liaison dans CMake ?

Comment ajouter des indicateurs de compilateur et de liaison dans CMake ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 16:43:17706parcourir

How to Add Compiler and Linker Flags in CMake?

Ajout d'indicateurs de l'éditeur de liens et du compilateur dans les fichiers CMake

Lors de la compilation de programmes C, il est souvent nécessaire d'ajouter des indicateurs spécifiques pour contrôler le comportement de le compilateur ou l'éditeur de liens. Dans CMake, ces indicateurs peuvent être ajoutés au projet à l'aide de divers mécanismes.

Ajout d'indicateurs de compilation

  • Définition de CMAKE_C_FLAGS : Ceci définit les indicateurs de compilation pour le code C.
  • Utilisation add_definitions : Les indicateurs peuvent être ajoutés directement à la définition cible sans modifier les variables CMake.

Exemple :

set(CMAKE_C_FLAGS "-fexceptions")

Ajout d'indicateurs de lien

  • Réglage CMAKE_EXE_LINKER_FLAGS : Ceci définit les indicateurs de l'éditeur de liens pour les exécutables.
  • Utilisation de set_target_properties : Permet de définir des propriétés spécifiques à la cible, y compris l'éditeur de liens flags.

Exemple :

set(CMAKE_EXE_LINKER_FLAGS "-lgcov")

Exemple spécifique pour -fexceptions

Pour ajouter l'indicateur -fexceptions, vous pouvez utiliser n'importe quel des méthodes suivantes :

  • Méthode 1 (Obsolète) :
set(CMAKE_EXE_LINKER_FLAGS "-fexceptions")
  • Méthode 2 (préférée) :
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions")
  • Méthode 3 (en utilisant Target Propriétés):
get_target_property(TARGET_COMPILE_FLAGS <target> COMPILE_FLAGS)
if(NOT TARGET_COMPILE_FLAGS)
  set(TARGET_COMPILE_FLAGS "")
endif()
set_target_properties(<target> PROPERTIES COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} -fexceptions")

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn