cmake mingw link lib
-
Hi Leute,
ich sehe den Wald vor lauter Bäume nicht... Google gibt mir alles möglich, aber nicht die Lösung für mein Problem raus. Bitte hilfe
System: Linux. IDE: KDevelop
Ziel: eine Win-DLL mit Link auf wininet.dll
Ich habe: /usr/i686-w64-mingw32/lib/libwininet.a
Wie kann ich diese in die CMakeLists einbauen?
Fehler: /usr/bin/i686-w64-mingw32-ld: cannot find -lwininet.lib
Eine .lib habe ich nicht... Es muss aber so gehen, weil MingW nur die ".a"-Libs hat. Ob static oder shared ist mir schleierhaft. Google ist leider nicht auf deutsch und die Suche entwickelt sich für mich wie die berühmte Nadel im Heuhaufen. Wer kann helfen, bitte?
Vielen Dank!
-
Die CMakeList, falls gewünscht:
cmake_minimum_required(VERSION 2.6) project(MyBoardLib) include(/project/win32/Toolchain-cross-mingw32-linux.cmake) add_definitions(-DBUILD_DLL) #SET(CMAKE_BUILD_TYPE Release) SET(CMAKE_BUILD_TYPE Debug) #set(CMAKE_CXX_FLAGS_RELEASE "-static -O3 -DNDEBUG") # default set(CMAKE_CXX_FLAGS_DEBUG "-static-libgcc -static-libstdc++ -Wl,--subsystem,windows") set(LIB_TYPE "SHARED") add_library(MyBoardLib ${LIB_TYPE} core/INetHelper.cpp \\ main.cpp \\ ) target_link_libraries(MyBoardLib wininet)
-
Oh man
Google wird immer blöder, die Suche nach cmake libwininet.a hilft erst.
Daraus ergibt sich folgende Lösung:
set(CMAKE_CXX_STANDARD_LIBRARIES "/usr/i686-w64-mingw32/lib/libwininet.a")
Ist zwar nicht sehr fein, hilft aber schon mal weiter.
Problem gelöst, danke!
-
set(CMAKE_CXX_STANDARD_LIBRARIES "/usr/i686-w64-mingw32/lib/libwininet.a")
Damit solltest du die Standard Libs die von dem Generator kommen, alle überschreiben. Wenn sonst keine Brauchst, auch ok ^^
besser:
SET(LINK_TO_MYLIB) # Leere variable erstellen LIST(APPEND LINK_TO_MYLIB "/usr/i686-w64-mingw32/lib/libwininet.a") #Variable als Liste behandeln und einen eintrag hinzufügen TARGET_LINK_LIBRARIES(mytarget LINK_TO_MYLIB) # Builder sagen das er das binary mytarget gegen die libs in LINK_TO_MYLIB linken soll
mytarget sollte ein cmake target sein was mit add_executable oder add_library erstellt wurde
Ciao ...
-
Yes
Danke für die Info!
Bin gerade am Anfang, das war die einzige Lösung die geholfen hat.
Die Lösung ist Perfekt:
SET(LINK_TO_MYLIB) LIST(APPEND LINK_TO_MYLIB "/usr/i686-w64-mingw32/lib/libwininet.a") TARGET_LINK_LIBRARIES(MyBoardLib ${LINK_TO_MYLIB})
Danke!