CMAKE für /DEF und /NODEFAULTLIB
Wie füge ich die linker-flags "DEF" und "NODEFAULT" zu vs2012 Projekt mit CMAKE?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie füge ich die linker-flags "DEF" und "NODEFAULT" zu vs2012 Projekt mit CMAKE?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie fügen Sie diese in
CMAKE_EXE_LINKER_FLAGS
:SET_TARGET_PROPERTIES(name PROPERTIES LINK_FLAGS "/DEF:\"ExportedFunctions.def\" /NODEFAULTLIB:\"mfc110d\"")
Die Allgemeine Möglichkeit ist das hinzufügen von linker flags
CMAKE_xxx_LINKER_FLAGS
, ja. Doch im Falle desCMAKE_SHARED_LINKER_FLAGS
und/DEF:
parameter, es gibt einen speziellen Fall, dass mich in Schwierigkeiten.Wenn Sie bereits
CMAKE_EXPORT_ALL_SYMBOLS
(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
) dann die/DEF:
parameter wird nicht angezeigt, in der Verknüpfung den Befehl, auch wenn Sie ihn angegebenCMAKE_SHARED_LINKER_FLAGS
.Dies ist, weil MSVC linker akzeptiert nur einen
/DEF:
parameter, und CMake nicht wollen, überschreiben Sie die vorhandenen:/DEF:<build_path>/exports.def
(was ist Hinzugefügt wegenCMAKE_EXPORT_ALL_SYMBOLS
) mit der einen, die Sie angeben, in dieCMAKE_SHARED_LINKER_FLAGS
.Können Sie auch
CMAKE_CXX_STANDARD_LIBRARIES
. Es fügt beliebige linker flags ohne Sie zu überprüfen, aber es fügt Sie in die Mitte der Verlinkung Befehl vor der/DEF:<build_path>/exports.def
so dass letztere nicht bekommen, außer Kraft gesetzt.Die komplette Diskussion zu diesem Fall hier: https://cmake.org/pipermail/cmake-developers/2019-November/031274.html.