Do you say this because for now building sfeMovie means building SFML too? or because sfeMovie is linked against that freshly rebuilt SFML version?
In Thor, I let the user specify a path to SFML, inside which the headers are included and the libraries are linked. I wonder why you do it differently... Do you think there are sfeMovie users which don't have SFML already installed?
A problem I see with different SFML versions: The header
<sfeMovie/Movie.hpp> includes many SFML headers. When building the library, your own SFML version is used. When I include
<sfeMovie/Movie.hpp> in my project, then
my include paths are searched, thus other versions of the headers are included.
Hmm I may think of it but I don't like it because I don't know what would happen in case it's statically linked in sfeMovie and the user also links his/her program against a different version/mode of SFML.
When both used the same version (the user's one), this wouldn't be an issue.
I tried to link SFML statically on my side, but I got warnings because
sfe::Movie inherits
sf::Drawable which doesn't export its symbols when I define
SFML_STATIC. When I start the program, only audio is played, the screen remains black. Unless I did something wrong, it seems like a sfeMovie user loses the choice about how to link SFML...
Sounds like a good idea, although it only applies to Windows builds.
True. You can pass
RUNTIME and
LIBRARY parameters to the CMake
install() command. I did such a case differentiation in Thor/src/CMakeLists.txt:
# Install (use "bin" folder for DLL, "lib" for SO files)
if(WIN32)
install(TARGETS ${THOR_LIB}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
else()
install(TARGETS ${THOR_LIB}
RUNTIME DESTINATION lib
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endif()
Could you tell me more about what went wrong when MSYS was installed to a path that contained spaces?
I installed it to C:\Program Files (x86)\MinGW. When I executed msys.bat, I got a popup with the message:
Windows cannot find "C:\Program". Make sure you typed the name correctly, and then try again.