Tut cmake etwas wie target_link_options?
Können Sie die COMPILE_OPTIONS auf eine INTERFACE-Bibliothek (foo)
und diejenigen, die COMPILE_OPTIONS auch von den Nutzern
foo.
add_library(foo INTERFACE)
target_link_libraries(foo INTERFACE foo_1)
target_compile_options(foo INTERFACE "-DSOME_DEFINE")
add_executable(exe exe.cpp)
target_link_libraries(exe foo)
Ist es möglich, etwas ähnliches zu tun für LINK_FLAGS ?
- Können Sie gemeinsam einen bestimmten Anwendungsfall?
- sicher. Zum Beispiel, eine Bibliothek, die Bedürfnisse LD-flag "--allow-multiple-Definitionen" oder auf windows /FORCE:MULTIPLE.
- Möglich, Duplikat der Wie füge ich ein linker oder ein compile-flag in einem CMake-Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der Dokumentation es gibt keine solche Eigenschaft, wie
INTERFACE_LINK_OPTIONS
oder so etwas. Wahrscheinlich, weilINTERFACE_*
Eigenschaften verwendet, um zu beschreiben, wie Sie Ziel (wie die Vermeidung von Verletzung der ODR-Regel oder Undefinierte Referenzen) und solche Optionen wie--allow-multiple-definitions
ist nicht im Zusammenhang mit der Benutzung einer bestimmten Bibliothek (IMHO ist es eine Anzeige eines Fehlers).Sowieso, für compiler wie
gcc
können Sietarget_link_libraries
hinzufügen linker flags zu:Aber ich weiß nicht, wie zu tun, etwas ähnliches für visual studio.
-
statt/
für cl.exe linker-Optionen, cl.exe akzeptiert beides und starten mit-
verhindert die Fehlinterpretation als name der Bibliothektarget_link_libraries(foo PRIVATE optimized -LTCG optimized -INCREMENTAL:NO)
arbeitet mitMicrosoft Visual Studio Community 2017, Version 15.6.4
und CMake 3.11CMake hat einen
target_link_options
ab version3.13
.Könnten Sie versuchen, so etwas wie dieses