首页 > 解决方案 > 如何将 PhysFS 与 CMAKE 链接?

问题描述

我正在尝试在 C 中的游戏中使用 PhysFS。我正在使用 CMake 生成 Makefile。CMake 表示很好地找到了包含文件夹和库,但在构建过程中出现错误:未定义对“PHYSFS_init”的引用。

这是我的 CMakeLists.txt 文件:

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

我在/usr/local/include/physfs.h有标题 physfs.h

标签: ccmakesdl-2archlinuxphysfs

解决方案


推荐阅读