问题描述
我一直在努力创建自己的游戏框架,最近一直在尝试弄清楚如何使用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 (将#修改为@)