Bonjour,
J'écris ce message car çà fait plusieurs jours que je me débats avec la compilation d'un projet avec la SFML 2. Mon but est de créer une librairie utilisant sfml-window comme back end. J'utilise GLEW, OpenGL 3.2 et PThread à côté mais j'ai déja réglé les problèmes de linkage avec ces 3 derniers. Je pense que le mieux pour vous décrire tous çà est mon script CMake :
#####################
# Define the project
cmake_minimum_required(VERSION 2.8)
project(Alt-Engine)
set(Alt-Engine_VERSION_MAJOR 0)
set(Alt-Engine_VERSION_MINOR 0)
set(Alt-Engine_VERSION_PATCH 0)
######################
# Include directories
include_directories("include" "extlibs/include")
if(WIN32)
include_directories("extlibs/windows/include")
endif()
#####################
# External libraries
find_package(OpenGL REQUIRED)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/mingw/lib/x86")
set(EXTRA_LIBS ${OPENGL_gl_LIBRARY})
set(EXTRA_LIBS ${EXTRA_LIBS} pthreadGC2)
set(EXTRA_LIBS ${EXTRA_LIBS} sfml-window sfml-system)
if(WIN32)
if(COMPILER_GCC)
endif()
endif()
#########
# Define
add_definitions(-DALT_DLL_EXPORTS -DGLEW_STATIC)
############
# Set files
file(GLOB_RECURSE ALT_SOURCE_FILES "src/*.cpp")
file(GLOB_RECURSE ALT_HEADER_FILES "include/*.hpp")
file(GLOB_RECURSE ALT_THIRD_C_SOURCE_FILES "extlibs/src/*.c")
####################
# Build the library
add_library(Alt-Engine SHARED ${ALT_SOURCE_FILES} ${ALT_HEADER_FILES} ${ALT_THIRD_C_SOURCE_FILES})
target_link_libraries(Alt-Engine ${EXTRA_LIBS})
Voici les erreurs que j'ai : (remarquez que j'ai des erreurs que avec sf::Window::setTitle et sf::Window::create alors que j'utilise d'autres méthodes de sf::Window)
14:01:54: Exécution des étapes pour le projet Alt-Engine...
14:01:54: Débute : "C:\MinGW\bin\mingw32-make.exe"
Linking CXX shared library libAlt-Engine.dll
CMakeFiles\Alt-Engine.dir/objects.a(SFMLVideoDevice.cpp.obj):SFMLVideoDevice.cpp:(.text+0x28e): undefined reference to `_imp___ZN2sf6Window8setTitleERKNS_6StringE'
Creating library file: libAlt-Engine.dll.a
CMakeFiles\Alt-Engine.dir/objects.a(SFMLVideoDevice.cpp.obj):SFMLVideoDevice.cpp:(.text+0x45a): undefined reference to `_imp___ZN2sf6Window6createENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [libAlt-Engine.dll] Error 1
mingw32-make[1]: *** [CMakeFiles/Alt-Engine.dir/all] Error 2
mingw32-make: *** [all] Error 2
14:01:55: Le processus "C:\MinGW\bin\mingw32-make.exe" s'est terminé avec le code 2.
Error while building/deploying project Alt-Engine (kit: Desktop Qt 5.0.1 MinGW 32bit)
Lors de l'exécution de l'étape "Make"
Pour résoudre les problèmes de compatibilité des compileurs, j'ai compilé la SFML avec le même que j'utilise pour ma lib. (il s'agit de MinGW 4.8 DW2; ne faites pas attention au "(kit: Desktop Qt 5.0.1 MinGW 32bit)" car ce n'est pas ce compilo qui est utilisé). Vous aurez peut-être remarqué que j'utilise QtCreator pour son intégration native de CMake en temps qu'IDE mais si j'utilise CMake en dehors de QtCreator et que je build avec Code::Blocks j'ai les mêmes erreurs...
Pour résumer je ne comprend rien à ce problème ... Merci d'avance