Sonntag, April 5, 2020

CMAKE für /DEF und /NODEFAULTLIB

Wie füge ich die linker-flags „DEF“ und „NODEFAULT“ zu vs2012 Projekt mit CMAKE?

InformationsquelleAutor etwas77 | 2013-09-13

2 Kommentare

  1. 9

    Können Sie fügen Sie diese in CMAKE_EXE_LINKER_FLAGS:

    if(MSVC)
      set(CMAKE_EXE_LINKER_FLAGS
          "${CMAKE_EXE_LINKER_FLAGS} /DEF:my_defs.def /NODEFAULTLIB")
    endif()
    
    • SET_TARGET_PROPERTIES(name EIGENSCHAFTEN LINK_FLAGS -DEF:“ExportedFunctions.def“ -NODEFAULTLIB:“mfc110d“ ) funktioniert das nicht, ich habe „Modul-definition-Datei“, aber kein „ignorieren bestimmter Standard-Bibliothek“..
    • Sie sollten in der Lage sein zu tun SET_TARGET_PROPERTIES(name PROPERTIES LINK_FLAGS "/DEF:\"ExportedFunctions.def\" /NODEFAULTLIB:\"mfc110d\"")
    • Oder CMAKE_SHARED_LINKER_FLAGS, oder CMAKE_LINKER_FLAGS … oh, Nein, was auch immer!
    • was bedeutet: /DEF:my_defs.def ?
    • meine da…Nacht. Danke!!!
  2. 0

    Die Allgemeine Möglichkeit ist das hinzufügen von linker flags CMAKE_xxx_LINKER_FLAGS, ja. Doch im Falle des CMAKE_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 angegeben CMAKE_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 wegen CMAKE_EXPORT_ALL_SYMBOLS) mit der einen, die Sie angeben, in die CMAKE_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.

Kostenlose Online-Tests