2012-05-23 80 views
2

我一直在尝试使用CMake与我在SDL中执行的项目,但遇到了一些问题。我的sdl文件夹等库位于C:\ SDL \ SDL-1.2.14。错误状态:CMake与SDL导致错误

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路径的字段来开始工作。问题当然是我找不到一种方法将这个“backport”返回到cmake文件中,所以我必须每次重新编辑它们,将生成的VS10文件加载到visual studio中,但是没有包含SDL的路径等被正确加载到项目中,所以它不会编译,说它不知道SDL.h在哪里。

+0

检查您运行CMake的build目录中的CMakeCache.txt文件。可能有一个条目指定“:PATH = ”,另一个用于SDL_image。您需要在['include_directories'](http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:include_directories)命令中添加这两个变量。 – Fraser

+0

找不到那个,但是我用include_directories添加了相对路径,它工作,所以感谢您的帮助!现在只有Windows的问题是,我可以编译程序,但是exe需要我将SDL dll与自己放在同一个目录中才能执行。有没有办法解决这个问题,让SDL在exe文件中,或者cmake将它们复制到正确的目录中? – will

+0

也许[这个答案](http://stackoverflow.com/questions/10671916/cmake-how-to-copy-dll-files-into-release-debug-folder/10672739#10672739)可以帮助吗? – Fraser

回答

1

你不需要包含Find<Lib>文件。 find_package(<Lib>)会自动查找并使用这些文件。

如果您使用的是Windows,我认为你需要设置SDLDIR环境变量到了SDL /lib/include文件夹所在的文件夹。