Я пытаюсь проверить glfw3 на Mac.Я не могу построить простой проект, потому что не могу связать с OpenGL.
Структура каталогов
├── CMakeLists.txt
├── OpenGL
│ ├── Application.cpp
│ ├── CMakeLists.txt
│ └── dependencies
│ └── GLFW
│ ├── include
│ │ └── GLFW
│ │ ├── glfw3.h
│ │ └── glfw3native.h
│ ├── lib
│ │ └── libglfw3.a
│ └── src
└── bin
CMakeList.txt
Верхний уровень CMakeList.txt
cmake_minimum_required(VERSION 3.11)
set(CMAKE_CXX_STANDARD 17)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
add_subdirectory(OpenGL)
Вложенный CMakeList.txt
cmake_minimum_required(VERSION 3.11)
project(OpenGL)
find_package(OpenGL REQUIRED)
add_executable(OpenGL Application.cpp)
target_include_directories(OpenGL PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/GLFW/include)
target_link_libraries(OpenGL ${OPENGL_LIBRARIES} ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/GLFW/lib/libglfw3.a)
Applicatin.cpp (взят прямо с glfw.org здесь )
#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", nullptr, nullptr);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT); <-- this line throws an error
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
Сообщение об ошибке
make[3]: *** No rule to make target '../OpenGL/dependencies/GLFW/include/lib/libglfw3.a', needed by '../bin/OpenGL'. Stop.
make[3]: *** Waiting for unfinished jobs....
[ 50%] Building CXX object OpenGL/CMakeFiles/OpenGL.dir/Application.cpp.o
/Users/dblock/CLionProjects/OpenGL/OpenGL/Application.cpp:27:17: error: use of undeclared identifier 'GL_COLOR_BUFFER_BIT'
glClear(GL_COLOR_BUFFER_BIT);
^
1 error generated.
make[3]: *** [OpenGL/CMakeFiles/OpenGL.dir/build.make:63: OpenGL/CMakeFiles/OpenGL.dir/Application.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:86: OpenGL/CMakeFiles/OpenGL.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:98: OpenGL/CMakeFiles/OpenGL.dir/rule] Error 2
make: *** [Makefile:118: OpenGL] Error 2
Моя IDE (CLion) сообщает следующее
Can't resolve variable 'glClear'
Can't resolve variable 'GL_COLOR_BUFFER_BIT'
Пожалуйста, дайте мне знать, где я иду не так.
Редактировать
Я добавил #import, и теперь я получаю новую ошибку
/usr/local/Cellar/cmake/3.11.1/bin/cmake --build /Users/dblock/CLionProjects/OpenGL/cmake-build-debug --target OpenGL -- -j 4
make[3]: *** No rule to make target '../OpenGL/dependencies/GLFW/include/lib/libglfw3.a', needed by '../bin/OpenGL'. Stop.
make[2]: *** [CMakeFiles/Makefile2:86: OpenGL/CMakeFiles/OpenGL.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:98: OpenGL/CMakeFiles/OpenGL.dir/rule] Error 2
make: *** [Makefile:118: OpenGL] Error 2
Решение
#include <OpenGL/gl.h> //<-- add this included to main.cpp fixed my issue