303 votes

Comment ajouter un drapeau d'édition de liens ou de compilation dans un fichier CMake ?

J'utilise le arm-linux-androideabi-g++ compilateur. Lorsque j'essaie de compiler un simple programme "Hello, World !", il se compile correctement. Lorsque je le teste en ajoutant une simple gestion d'exception dans ce code, il fonctionne également (après avoir ajouté -fexceptions .. Je suppose qu'il est désactivé par défaut).

C'est pour un appareil Android, et je ne veux utiliser que CMake, pas ndk-build .

Par exemple - first.cpp

#include <iostream>

using namespace std;

int main()
{
   try
   {
   }
   catch (...)
   {
   }
   return 0;
}

./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions

Il fonctionne sans problème...

Le problème ... J'essaie de compiler le fichier avec un fichier CMake.

Je souhaite ajouter le -fexceptions comme un drapeau. J'ai essayé avec

set (CMAKE_EXE_LINKER_FLAGS -fexceptions ) or set (CMAKE_EXE_LINKER_FLAGS "fexceptions" )

et

set ( CMAKE_C_FLAGS "fexceptions")

Il affiche toujours une erreur.

1voto

myuce Points 854

Cela a fonctionné pour moi lorsque j'ai eu besoin d'une définition de précompilation nommée "NO_DEBUG" :

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -DNO_DEBUG")

Puis, à partir du code

#ifdef NO_DEBUG
.....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X