How link PhysFS with CMAKE?

342 Views Asked by At

I'm trying to use the PhysFS in my game in C. I'm using CMake to generate the Makefile. CMake indicates well found the include folder and the lib, but I get an error during the build: undefined reference to "PHYSFS_init".

Here is my CMakeLists.txt file:

cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME "awesome-game")

project(${PROJECT_NAME})

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)
find_package(SDL2_mixer REQUIRED)
find_package(PhysFS REQUIRED)
include_directories(${SDL2_DIRS})
include_directories(${SDL2_IMAGE_DIRS})
include_directories(${SDL2_MIXER_DIRS})
include_directories(${PhysFS_DIRS})


file(GLOB_RECURSE SRCS "src/*.h" "src/*.c")  
add_executable(${PROJECT_NAME} ${SRCS})
target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES} PRIVATE ${SDL2_IMAGE_LIBRARIES} PRIVATE ${SDL2_MIXER_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PhysFS_LIBRARY})

add_definitions(-DSDL_MAIN_HANDLED)

CMakeCache.txt :

//Path to a file.
PHYSFS_INCLUDE_DIR:PATH=/usr/local/include

//Path to a library.
PHYSFS_LIBRARY:FILEPATH=/usr/local/lib/libphysfs.so

//Path to a library.
SDL2MAIN_LIBRARY:FILEPATH=/usr/lib/libSDL2main.a

//SDL2 directory
SDL2_DIR:PATH=

//Path to a file.
SDL2_IMAGE_INCLUDE_DIR:PATH=/usr/include/SDL2

//Path to a library.
SDL2_IMAGE_LIBRARY:FILEPATH=/usr/lib/libSDL2_image.so

//Path to a file.
SDL2_INCLUDE_DIR:PATH=/usr/include/SDL2

//Where the SDL Library can be found
SDL2_LIBRARY:STRING=/usr/lib/libSDL2.so;-lpthread

//Path to a file.
SDL2_MIXER_INCLUDE_DIR:PATH=/usr/include/SDL2

//Path to a library.
SDL2_MIXER_LIBRARY:FILEPATH=/usr/lib/libSDL2_mixer.so

I have the header physfs.h at /usr/local/include/physfs.h

0

There are 0 best solutions below