自定义库无法打开依赖项的源文件,例如SDL2和Box2D

问题描述

我一直在努力创建自己的游戏框架,最近一直在尝试弄清楚如何使用CMake将其编译为库。但是,我遇到了一个无法解决的问题。尝试使用CMake创建的lib文件时,弹出错误消息,提示它无法打开库,例如“ 严重性代码说明项目文件行抑制状态错误(活动),E1696无法打开源文件'SDL2 / SDL.h”。 '测试F:\ Code \ MyProject \ include \ App.h 7 ”。我认为这是由于未随框架导出依赖项引起的。同样以防万一,这有助于我使用Vcpkg获取我的库。

这是我的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.7)

set(PROJECT_NAME MyProject)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
    set(CMAKE_TOOLCHAIN_FILE "vcpkg/scripts/buildsystems/vcpkg.cmake"
    CACHE STRING "")
    message(" [INFO] VCPKG CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
endif()

project(${PROJECT_NAME} VERSION 1.0.0)

find_package(SDL2 CONfig required)
message(" [INFO] Found SDL2")
find_package(sdl2-image CONfig required)
message(" [INFO] Found SDL2-Image")
find_package(sdl2-mixer CONfig required)
message(" [INFO] Found SDL2-mixer")
find_package(sdl2-ttf CONfig required)
message(" [INFO] Found SDL2-TTF")
find_package(unofficial-Box2d CONfig required)
message(" [INFO] Found Box2D")

file(GLOB SOURCES "include/*h" "include/*.cpp")

add_library(${PROJECT_NAME} STATIC ${SOURCES})

target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2 SDL2::SDL2main PRIVATE SDL2::SDL2_image PRIVATE SDL2::SDL2_mixer PRIVATE SDL2::SDL2_ttf PRIVATE unofficial::Box2d::Box2d )

set_target_properties( ${PROJECT_NAME}
    PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin"
)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)