Wie Linker oder Compiler-Flag in cmake-Datei hinzufügen?
Ich bin mit der arm-linux-androideabi-g++
compiler. Wenn ich versuche zu kompilieren, eine einfache "hello world" - Programm kompiliert er fein. Wenn ich es testen, indem eine einfache Ausnahmebehandlung im code funktioniert es auch (nach dem hinzufügen -fexceptions
.. ich denke, es ist standardmäßig deaktiviert )
Dies ist für ein android-Gerät, und ich möchte nur zu verwenden cmake
nicht ndk-build
Beispielsweise - first.cpp
#include <iostream>
using namespace std;
int main()
{
try{
}
catch(...)
{
}
return 0;
}
./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions
Es funktioniert ohne Probleme ..
Das problem .. ich versuche die Datei zu kompilieren mit cmake Datei.
Möchte ich hinzufügen, dass die -fexceptions
wie eine fahne. Ich habe versucht, mit
set (CMAKE_EXE_LINKER_FLAGS -fexceptions ) or set (CMAKE_EXE_LINKER_FLAGS "fexceptions" )
und
set ( CMAKE_C_FLAGS "fexceptions")
Es immer noch ein Fehler angezeigt.
InformationsquelleAutor der Frage solti | 2012-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie möchten, fügen Sie diese flags (besser zu erklären, Sie in eine Konstante) :
Gibt es mehrere Möglichkeiten, um hinzuzufügen :
Die einfachste (nicht sauber, aber einfach und bequem, funktioniert nur für compile-flags, C & C++ auf einmal) :
Anhängen zu den entsprechenden cmake-Variablen
Verwendung von target-Eigenschaften, vgl. doc cmake kompilieren flag target-Eigenschaft und müssen das Ziel kennen Namen.
Jetzt habe ich Methode 2 verwenden.
InformationsquelleAutor der Antwort Offirmo
In neueren Versionen von CMake kann man auch einstellen von compiler-und linker-flags für ein einzelnes Ziel mit
target_compile_options
undtarget_link_libraries
bzw. (ja, das letztere legt linker-Optionen auch):Der Vorteil dieser Methode ist, dass Sie können Steuern, Vermehrung von Optionen, um die anderen Ziele abhängen kann man über
PUBLIC
undPRIVATE
.InformationsquelleAutor der Antwort vitaut
Versuchen Sie, die variable
CMAKE_CXX_FLAGS
stattCMAKE_C_FLAGS
:Die variable
CMAKE_C_FLAGS
betrifft nur die C-compiler, aber Sie sind C++ - code kompilieren.Hinzufügen von Kennzeichen zu
CMAKE_EXE_LINKER_FLAGS
redundant ist.InformationsquelleAutor der Antwort sakra
Kasse die ucm_add_flags und ucm_add_linker_flags Makros von ucm (mein set von nützlichen cmake-Makros) Sie beschäftigen sich mit dem anfügen von compiler - /linker-flags
InformationsquelleAutor der Antwort onqtam
Können Sie auch hinzufügen, linker flags zu einem bestimmten Ziel mit der
LINK_FLAGS
Eigenschaft:Wenn Sie übertragen möchten das ändern, um andere Ziele, erstellen Sie ein dummy-Ziel zu verknüpfen.
InformationsquelleAutor der Antwort kaveish