CMake scheint Linker-Flags am Anfang eines GCC-Kompilierbefehls voranzustellen, anstatt es am Ende anzufügen. Wie mache ich CMake Linker Flags anhängen?
Hier ist ein einfaches Beispiel, um das Problem zu reproduzieren.
Betrachten Sie diesen C ++ Code, der clock_gettime
verwendet:
Dies ist eine CMakeLists.txt, um die obige C ++ - Datei zu kompilieren:
%Vor% Beachten Sie, dass wir -lrt
hinzugefügt haben, da es die Definition von clock_gettime
hat.
Kompilieren Sie dies mit:
%Vor% Dieser Fehler tritt auf, obwohl Sie -lrt
im Befehl:
Das Problem hier ist der C ++ - Kompilierbefehl, der von CMake erzeugt wird, wobei -lrt
an der Vorderseite vorangestellt ist. Die Kompilierung funktioniert gut, wenn sie gewesen wäre:
Wie kann CMake die Linker-Flags am Ende anhängen?
Im Allgemeinen können Sie nicht (denke ich), aber in dem speziellen Fall, dass Sie mit einer bestimmten Bibliothek verknüpfen möchten, sollten Sie die Syntax
verwenden %Vor% stattdessen. CMake weiß, dass dies der Übergabe von -lrt
auf der Linker-Befehlszeile entspricht.
Tags und Links gcc linker cmake linker-flags