I am using the arm-linux-androideabi-g++
compiler. When I try to compile a simple "Hello, World!" program it compiles fine. When I test it by adding a simple exception handling in that code it works too (after adding -fexceptions
.. I guess it is disabled by default).
This is for an Android device, and I only want to use CMake, not ndk-build
.
For example – first.cpp
#include <iostream>
using namespace std;
int main()
{
try
{
}
catch (...)
{
}
return 0;
}
./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions
It works with no problem…
The problem … I am trying to compile the file with a CMake file.
I want to add the -fexceptions
as a flag. I tried with
set (CMAKE_EXE_LINKER_FLAGS -fexceptions ) or set (CMAKE_EXE_LINKER_FLAGS "fexceptions" )
and
set ( CMAKE_C_FLAGS "fexceptions")
It still displays an error.
Best Answer
Note: Given CMake evolution since this was answer was written, most of the suggestions here are now outdated/deprecated and have better alternatives
Suppose you want to add those flags (better to declare them in a constant):
There are several ways to add them:
The easiest one (not clean, but easy and convenient, and works only for compile flags, C & C++ at once):
Appending to corresponding CMake variables:
Using target properties, cf. doc CMake compile flag target property and need to know the target name.
Right now I use method 2.