带有 SDL 的 CMake 导致错误
Posted
技术标签:
【中文标题】带有 SDL 的 CMake 导致错误【英文标题】:CMake with SDL causing errors 【发布时间】:2012-05-23 23:36:49 【问题描述】:我一直在尝试将 CMake 与我在 SDL 中做的项目一起使用,但遇到了一些问题。我用于库等的 sdl 文件夹位于 C:\SDL\SDL-1.2.14。错误状态:
Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) Could NOT find SDLIMAGE (missing: SDLIMAGE_LIBRARY SDLIMAGE_INCLUDE_DIR) CMake Error at C:/Program Files (x86)/CMake
2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE): Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) Call Stack (most recent call first): C:/Program Files (x86)/CMake
2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE) C:/Program Files (x86)/CMake
2.8/share/cmake-2.8/Modules/FindSDL.cmake:172 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:10 (Find_Package)
这是我的 CMakeLists.txt 文件。
Project(SDLExample)
Include(FindSDL)
Include(FindSDL_image)
set(
SOURCES
example.cpp
)
Find_Package(SDL REQUIRED)
Find_Package(SDL_image REQUIRED)
if(NOT SDL_FOUND)
message( FATAL ERROR "SDL not found!")
endif(NOT SDL_FOUND)
link_libraries(
$SDL_LIBRARY
$SDLIMAGE_LIBRARY
SDLmain
)
add_executable(
Example
WIN32
MACOSX_BUNDLE
$SOURCES
)
有什么想法吗?
编辑:我现在通过在 Windows GUI 中编辑 SDL 路径的字段来让它工作。问题当然是我找不到将它“反向移植”回 cmake 文件的方法,所以我每次都必须重新编辑它们,生成的 VS10 文件加载到 Visual Studio 中,但没有包含SDL 的路径等已正确加载到项目中,因此它不会编译说它不知道 SDL.h 在哪里。
【问题讨论】:
检查您运行 CMake 的构建目录中的 CMakeCache.txt 文件。可能有一个指定<VAR>:PATH=<Path to SDL includes>
的条目和一个用于 SDL_image 的条目。您需要在 include_directories
命令中添加这两个变量。
找不到,但我确实使用 include_directories 添加了相对路径并且它有效,所以感谢您的帮助!。现在在 windows 上唯一的问题是,我可以编译程序,但是 exe 要求我将 SDL dll 与它本身放在同一目录中才能执行。有什么办法可以让 SDL 包含在 exe 本身中,或者让 cmake 将它们复制到正确的目录中?
也许this answer 能帮上忙?
【参考方案1】:
您不需要包含Find<Lib>
文件。 find_package( <Lib> )
自动查找并使用这些文件。
如果您使用的是 Windows,我认为您需要将 SDLDIR 环境变量设置为 SDL /lib
和 /include
文件夹所在的文件夹。
【讨论】:
以上是关于带有 SDL 的 CMake 导致错误的主要内容,如果未能解决你的问题,请参考以下文章
在带有openGL和SDL的Linux上使用c ++时出现SIGSEGV错误
CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上