Вопрос по Cmake

Изображение пользователя nitrofox.

В Qmake для того чтобы указать какие библиотеки нужны я писал LIBS += -lX11 -lXi -lXmu -lglut -lGL -lGLU
Как тоже самое написать под Cmake..

0
nitrofox - 25 Февраль, 2015 - 04:34
Изображение пользователя nitrofox.

Нашел на хабре статью по 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 жесткая штука.

+1
nitrofox - 25 Февраль, 2015 - 04:57
Изображение пользователя nitrofox.

Все понял где ошибся. Пропустил первый параметр в target_link_libraries

target_link_libraries(${PROJECT_NAME} ${X11_LIBRARIES} ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES} )

+2
mft - 25 Февраль, 2015 - 16:46

###########################
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})
###########################

0
nitrofox - 25 Февраль, 2015 - 17:36
Изображение пользователя nitrofox.

Спасибо за совет.
Я просто сделал по подобию одной статьи на хабре.
Там в примере было
find_package(SDL REQUIRED)
if(NOT SDL_FOUND)
    message(SEND_ERROR "Failed to find SDL")
    return()
else()
    include_directories(${SDL_INCLUDE_DIR})
endif()

0
mft - 25 Февраль, 2015 - 17:57

REQUIRED - означает, что без пакета SDL сборка будет остановлена с ошибкой.
Лучше читать тут

+1
MacLeod - 25 Февраль, 2015 - 14:30
Изображение пользователя MacLeod.

CMake - очень удобная вещь.
Только совет: не используйте glut/freeglut - он старый и неудобный. Не используйте x11 напрямую.
Используйте glfw3 http://www.glfw.org/.
Glfw3, glew, glm, gli и прочие - включайте в проект исходниками, делая отдельные таргеты cmake.
В итоге, результат будет собираться под все десктопные платформы.
Если пойти дальше - попробуйте движок cocos2d-x. Там еще и все мобильные платформы можно прикрутить, а версия для linux собирается как раз на glfw3.

0
mft - 25 Февраль, 2015 - 16:55

правду говорит, лучше cmake нет ничего. сложно по началу, но возможности почти не ограничены.

Я тут недавно написал свой модуль, простой .cmake скрипт, который собирает deb пакеты. Скриптик строк 100, и без косяков cpack.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры