SFML community forums
Help => General => Topic started by: jaqb17 on November 26, 2016, 12:26:02 am
-
Hello!
I want to generate a simple project with CMake. Here is my CMakeLists.txt
cmake_minimum_required(VERSION 3.4)
project(Program)
set(SOURCE_FILES
src/main.cpp
)
set(SFML_ROOT "${CMAKE_SOURCE_DIR}/SFML/lib")
set(SFML_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/SFML/include")
set(SFML_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/SFML/lib")
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/SFML/cmake/Modules")
find_package(SFML 2 REQUIRED window )
include_directories(
${SFML_INCLUDE_DIR}
)
add_executable(Program ${SOURCE_FILES}
${SFML_LIBRARIES}
)
message ( ${SFML_LIBRARIES} )
target_link_libraries(Program ${SFML_LIBRARIES})
Everything works great on OSX, but on Windows SFML_LIBRARIES looks like this:
debug<path...>/lib/libsfml-window-d.aoptimized<path...>/lib/libsfml-window.a
...and because of that i got CMake error (check out screenshot).
What should I do to make it work on Windows?
-
Everything works great on OSX, but on Windows SFML_LIBRARIES looks like this:
debug<path...>/lib/libsfml-window-d.aoptimized<path...>/lib/libsfml-window.a
...and because of that i got CMake error
No, not because of that. This part is perfectly fine. What's wrong is that you put libraries in add_executable (which should only contain source files).
-
OK I removed SFML_LIBRARIES from add_executable, and generating works well, but now linking is a problem (undefined references).
I tried to build SFML by myself, and also modified my CMakeLists.txt. Now it looks like that:
cmake_minimum_required(VERSION 3.4)
project(Program)
set(SOURCE_FILES
src/main.cpp
)
set(SFML_ROOT "C:/Users/Komputer.DESKTOP-5G9R8AU/Desktop/SFML_ROOT/install")
set(SFML_INCLUDE_DIR "C:/Users/Komputer.DESKTOP-5G9R8AU/Desktop/SFML_ROOT/install/include")
set(SFML_LIBRARY_DIR "C:/Users/Komputer.DESKTOP-5G9R8AU/Desktop/SFML_ROOT/install/lib")
set(CMAKE_MODULE_PATH "C:/Users/Komputer.DESKTOP-5G9R8AU/Desktop/SFML_ROOT/install/cmake/Modules")
find_package(SFML 2 REQUIRED window)
include_directories(
${SFML_INCLUDE_DIR}
)
add_executable(Program ${SOURCE_FILES}
)
message ( ${SFML_LIBRARIES} )
target_link_libraries(Program ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
Something I forgot?
-
Something I forgot?
The error messages ;)
-
Here you go! :D
It throws error like this for every use of SFML object.
-
The window module depends on the system module, so you'll also have to find that. Additionally you shouldn't set SFML_INCLUDE_DIR and SFML_LIBRARY_DIR yourself, those are automatically set by FindSFML.cmake.
-
Oh shit! Right! I forgot about system module! Thanks sir! Now everything is fine. ::)