c ++ - CMake - Link mod exe på Windows
Problem
Jeg forsøger at lave et pluginsystem til min ansøgning, og derfor skal hvert plugin forbinde med min hovedapplikation. Det er fint på Linux og MacOS, da jeg bare kan indstille ENABLE\_EXPORTS-ejendommen til mit eksekverbare mål (
set\_target\_properties(${PROJECT\_NAME} PROPERTIES ENABLE\_EXPORTS 1
), og plugins vil forbinde helt fint. På Windows, men clang++
råber på mig, at det ikke kan finde libws2editor.dll.a
.clang++.exe: error: no such file or directory: 'ws2editor/libws2editor.dll.a'
Når man kigger over CMake-dokumenterne, står det 'For DLL-platforme oprettes et importbibliotek for de eksporterede symboler og bruges til at forbinde.' - Denne importbiblioteksfil (formodentlig .dll.a) synes aldrig at blive oprettet.
Så hvordan kan jeg få CMake'en til at bygge på Windows for at oprette denne fil eller på anden måde link til en eksekverbar?
Bedste reference
Det ser ud til, at jeg kan bruge
ar
til at generere .a filen for mig, uanset generator - plugins synes at forbinde og indlæse lige fint, når du gør dette. Fantastisk! :)if(WIN32)
#Invoke ar to generate a .dll.a from the .obj files, required to link plugins
add\_custom\_command(TARGET ${PROJECT\_NAME} PRE\_LINK
COMMAND sh -c "${CMAKE\_AR} cr lib${PROJECT\_NAME}.dll.a $$(find . -name '*.obj' -printf '\%p ')"
COMMENT "Generating lib${PROJECT\_NAME}.dll.a for external linking"
)
#Also add the install command for libws2editor.dll.a
install(FILES ${CMAKE\_CURRENT\_BINARY\_DIR}/lib${PROJECT\_NAME}.dll.a DESTINATION bin)
endif(WIN32)