What I don't understand is why I only need the .so files on linux, but need both the .lib and the .dll on windows.
There are plenty of explanations about this on the internet.
In short: the .lib is the
import library, the file that the linker will read when linking your program; the .dll is the
runtime library, the file that will be loaded by the OS when running your program.
On Linux, the .so file handles both roles.
What's important is that you need the .lib file only when you compile, and the .dll file only when you execute (so you don't have to distribute .lib files).
And does anyone know how I can avoid having to copy the .dlls everytime?
Why would you copy them everytime? They never change.
And if you don't want DLLs at all, link statically.
By the way, you should use the FindSFML.cmake script to abstract the way SFML is found and used by CMake.
Wait... why is this post in the C forum??