Ich habe ein kleines Projekt mit einem Makefile, das ich in CMake konvertieren möchte, hauptsächlich, um Erfahrungen mit CMake zu sammeln. Für die Zwecke dieses Beispiels enthält das Projekt eine Quelldatei (C ++, obwohl ich die Sprache nicht für besonders relevant halte) und eine statische Bibliotheksdatei, die ich von einer anderen Stelle kopiert habe. Nehmen Sie aus Gründen der Argumentation an, dass der Quellcode für die Bibliothek nicht verfügbar ist. Ich habe nur die .a-Datei und den entsprechenden Header.
Mein handgemachtes Makefile enthält diese Build-Regel:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
das funktioniert gut. Wie kann ich CMake anweisen, dies zu reproduzieren? Natürlich nicht genau dieses Makefile, sondern etwas, das einen äquivalenten Verknüpfungsbefehl enthält. Ich habe die offensichtlichen, aber naiven Wege ausprobiert
add_executable(main main.cpp libbingitup.a)
oder
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
sowie verschiedene Dinge mit link_directories(.)
oder add_library(bingitup STATIC IMPORTED)
etc., aber bisher nichts, was zu einer erfolgreichen Verknüpfung führt. Was soll ich tun
Versionsdetails: CMake 2.8.7 unter Linux (Kubuntu 12.04) mit GCC 4.6.3
quelle
target_include_directories
oder verwendeninclude_directories
(ersteres ist der bevorzugte Weg, da es spezifischer ist).Wenn Sie nicht den vollständigen Pfad einschließen möchten, können Sie dies tun
bingitup
ist derselbe Name, den Sie einem Ziel geben würden, wenn Sie die statische Bibliothek in einem CMake-Projekt erstellen:CMake fügt automatisch die
lib
auf die Vorder- und die.a
am Ende auf Linux, und.lib
am Ende unter Windows.Wenn die Bibliothek extern ist, möchten Sie möglicherweise den Pfad zur Bibliothek mit hinzufügen
quelle
Ich fand das hilfreich ...
http://www.cmake.org/pipermail/cmake/2011-June/045222.html
Aus ihrem Beispiel:
quelle