Я работаю в Windows и хотел бы создать независимый от ОС проект в CMake. Я также хотел бы использовать OpenGL с freeglut.
My CMakeLists.txt пока выглядит так:
project (visualizer)
set(GLUT_INCLUDE_DIR "C:/Program Files (x86)/freeglut/include")
set(OPENGL_LIBRARY_DIR "C:/Program Files (x86)/freeglut/lib")
# GLUT
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
if(NOT GLUT_FOUND)
message(ERROR "GLUT not found!")
endif(NOT GLUT_FOUND)
# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
if(NOT OPENGL_FOUND)
message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)
add_executable(visu visualizer.cpp)
target_link_libraries(visu ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})
Я должен явно определить пути для GLUT_INCLUDE_DIR
и OPENGL_LIBRARY_DIR
, иначе cmake выдаст мне эту ошибку:
Ошибка CMake в C: / Program
Файлы / CMake / доля / CMake-3,14 / Модули / FindPackageHandleStandardArgs.cmake: 137
(сообщение): НЕ удалось найти GLUT (отсутствует: GLUT_INCLUDE_DIR)
Насколько я знаю, это должно быть обработано findglut.cmake
. Я имею в виду, у меня нет опыта, чтобы выяснить, где искать библиотеку, но я думаю, что эта часть findglut.cmake
должна это сделать:
if (WIN32)
find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
PATHS ${GLUT_ROOT_PATH}/include )
find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Release
)
find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Debug
)
mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
select_library_configurations(GLUT_glut)
else ()
Мой актуальный вопрос: Куда мне поместить файлы freeglut, чтобы CMake нашел их без каких-либо дополнительных усилий?