2012-05-23 2 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} 
) 

Любые идеи?

Редактировать: Я получил его сейчас, отредактировав поля для путей SDL в графическом интерфейсе Windows. Проблема, конечно, не в том, что я могу найти способ «вернуть обратно» в файл cmake, поэтому мне придется переделывать их каждый раз, сгенерированный файл VS10, загружаемый в визуальную студию, но ни один из них не включает пути и т. д. для SDL были правильно загружены в проект, поэтому он не будет компилировать, говоря, что не знает, где находится SDL.h.

+0

Проверьте файл CMakeCache.txt в каталоге сборки, откуда вы запустили CMake. Вероятно, есть запись, указывающая ': PATH = <Путь к SDL включает> и один для SDL_image. Вам нужно добавить обе эти переменные в команду ['include_directories'] (http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:include_directories). – Fraser

+0

Не удалось найти это, но я добавил относительные пути с include_directories, и это сработало, поэтому спасибо за помощь !. Только проблема теперь в Windows, я могу скомпилировать программу, но exe требует от меня, чтобы DLL SDL в том же каталоге, что и сам, чтобы он мог выполнить. Есть ли способ обойти это, чтобы иметь 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 папки расположены.

Смежные вопросы