Ist es möglich, install (TARGETS ...) mit Zielen zu verwenden, die in Verzeichnissen definiert sind, die mit add_subdirectory hinzugefügt wurden?install (TARGETS ...) und add_subdirectory
Mein Anwendungsfall ist, dass ich e.gg eine Umdrehung für gtest bauen will. Das gtest-Projekt hat zufällig eine CMakeLists.txt ohne irgendwelche Installationsanweisungen. Ich möchte das Paket erstellen, ohne diese Anweisungen der CMakeLists.txt von gtest hinzuzufügen.
Ich habe diese resultierende Verzeichnisstruktur:
+ gtest-1.5.0/...
+ CMakeLists.txt
Die CMakeLists von Gtest-1.5.0 definiert Bibliotheken wie folgt aus:
cxx_static_library(gtest "${cxx_strict}" src/gtest-all.cc)
cxx_static_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
target_link_libraries(gtest_main gtest)
jetzt möchte ich etwas zu meiner CMakeLists hinzuzufügen. txt:
add_subdirectory(gtest-1.5.0)
install(TARGETS gtest gtest_main ARCHIVE DESTINATION lib)
aber Cmake korrekt heißt es:
CMake Error at CMakeLists.txt:10 (install):
install TARGETS given target "gtest" which does not exist in this
directory.
Gibt es eine Möglichkeit, dies zu tun, ohne gtest-1.5.0 zu patchen?
ok .. Das könnte funktionieren, aber ich verstehe nicht, warum ich die definierten Namen in target_link_libraries verwenden kann und nicht in Befehle installieren! – Gizmomogwai
Der Installationsbefehl untersucht nur das aktuelle Verzeichnis, wenn festgestellt wird, ob ein Ziel existiert, im Gegensatz zu target_link_libraries, das alle Ziele scannt. – RobertJMaynard
Ok ... danke für die Erklärung, ich dachte so etwas, aber ich war mir nicht sicher (könnten Sie Ihre Installation bearbeiten (FILES-Befehl, weil installieren (FILES nimmt nicht den ARCHIVE-Parameter). – Gizmomogwai