Бессмысленное дублирование проверки. То же самое короче можно написать ########################### find_package(X11 REQUIRED) include_directories(${X11_INCLUDE_DIR}) ###########################
Спасибо за совет.
Я просто сделал по подобию одной статьи на хабре.
Там в примере было find_package(SDL REQUIRED) if(NOT SDL_FOUND) message(SEND_ERROR "Failed to find SDL") return() else() include_directories(${SDL_INCLUDE_DIR}) endif()
CMake - очень удобная вещь.
Только совет: не используйте glut/freeglut - он старый и неудобный. Не используйте x11 напрямую.
Используйте glfw3 http://www.glfw.org/.
Glfw3, glew, glm, gli и прочие - включайте в проект исходниками, делая отдельные таргеты cmake.
В итоге, результат будет собираться под все десктопные платформы.
Если пойти дальше - попробуйте движок cocos2d-x. Там еще и все мобильные платформы можно прикрутить, а версия для linux собирается как раз на glfw3.
Нашел на хабре статью по cmake
написал чтото:
###########################
find_package(OpenGL REQUIRED)
if(NOT OPENGL_FOUND)
message(SEND_ERROR "Failed to find OPENGL")
return()
else()
include_directories(${OPENGL_INCLUDE_DIR})
endif()
###########################
find_package(GLUT REQUIRED)
if(NOT GLUT_FOUND)
message(SEND_ERROR "Failed to find GLUT")
return()
else()
include_directories(${GLUT_INCLUDE_DIR})
endif()
###########################
find_package(X11 REQUIRED)
if(NOT X11_FOUND)
message(SEND_ERROR "Failed to find X11")
return()
else()
include_directories(${X11_INCLUDE_DIR})
endif()
###########################
target_link_libraries(${X11_LIBRARIES} ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES} )
Все равно не получается собрать ее. cmake жесткая штука.
Все понял где ошибся. Пропустил первый параметр в target_link_libraries
target_link_libraries(${PROJECT_NAME} ${X11_LIBRARIES} ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES} )
###########################
find_package(X11 REQUIRED)
if(NOT X11_FOUND)
message(SEND_ERROR "Failed to find X11")
return()
else()
include_directories(${X11_INCLUDE_DIR})
endif()
###########################
Бессмысленное дублирование проверки. То же самое короче можно написать
###########################
find_package(X11 REQUIRED)
include_directories(${X11_INCLUDE_DIR})
###########################
Спасибо за совет.
Я просто сделал по подобию одной статьи на хабре.
Там в примере было
find_package(SDL REQUIRED)
if(NOT SDL_FOUND)
message(SEND_ERROR "Failed to find SDL")
return()
else()
include_directories(${SDL_INCLUDE_DIR})
endif()
REQUIRED - означает, что без пакета SDL сборка будет остановлена с ошибкой.
Лучше читать тут
CMake - очень удобная вещь.
Только совет: не используйте glut/freeglut - он старый и неудобный. Не используйте x11 напрямую.
Используйте glfw3 http://www.glfw.org/.
Glfw3, glew, glm, gli и прочие - включайте в проект исходниками, делая отдельные таргеты cmake.
В итоге, результат будет собираться под все десктопные платформы.
Если пойти дальше - попробуйте движок cocos2d-x. Там еще и все мобильные платформы можно прикрутить, а версия для linux собирается как раз на glfw3.
правду говорит, лучше cmake нет ничего. сложно по началу, но возможности почти не ограничены.
Я тут недавно написал свой модуль, простой .cmake скрипт, который собирает deb пакеты. Скриптик строк 100, и без косяков cpack.
Отправить комментарий