CMake и Conan: неустранимая ошибка — нет такого файла или каталога для ⇐ C++
CMake и Conan: неустранимая ошибка — нет такого файла или каталога для
Я столкнулся с проблемой при создании проекта на C++, и мне нужна помощь в ее разрешении. Я создал проект, в котором управляю зависимостями с помощью Conan, и создал файл CMakeLists.txt для связывания этих библиотек. Однако когда я пытаюсь собрать проект с помощью команды cmake, я сталкиваюсь со следующей ошибкой:
C:/Users/veltr/Desktop/Exercisions/OpenGLProject/Application.cpp:1:10: фатальная ошибка: GLEW/glew.h: такого файла или каталог 1 | #include | ^~~~~~~~~~~~~ компиляция прекращена. make[2]: *** [CMakeFiles/OpenGLProject.dir/Application.cpp.obj] Блок 1 make[1]: *** [CMakeFiles/OpenGLProject.dir/all] Цвет 2 У меня есть файл conan.txt, в котором я указываю зависимости, которые будут установлены с помощью conan install. Я создал файл CMakeLists.txt для связи необходимых библиотек. Кажется, что проект собирается без ошибок, но я сталкиваюсь с упомянутой фатальной ошибкой, когда пытаюсь скомпилировать тестовый код для проверки функциональности.
[*]
conanfile.txt
[требуется] OpenGL/система glfw/3.3.8 свечение/2.2.0 [генераторы] CMakeDeps CMakeToolchain [макет] cmake_layout [*]CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) find_package (ТРЕБУЕТСЯ glfw3) find_package (ТРЕБУЕТСЯ OpenGL) find_package (ТРЕБУЕТСЯ GLEW) add_executable(${PROJECT_NAME} Application.cpp) target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::glew_s) target_link_libraries(${PROJECT_NAME} OpenGL::GL) [*]Application.cpp
#include #include int main (недействительный) { окно GLFWwindow*; /* Инициализируем библиотеку */ если (!glfwInit()) вернуть -1; /* Создаем окно оконного режима и его контекст OpenGL */ окно = glfwCreateWindow(640, 480, «Привет, мир», NULL, NULL); если (!окно) { glfwTerminate(); вернуть -1; } /* Делаем контекст окна текущим */ glfwMakeContextCurrent (окно); /* Цикл, пока пользователь не закроет окно */ в то время как (!glfwWindowShouldClose(окно)) { /* Рендеринг здесь */ glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_TRIANGLES); glVertex2f(-0,5f,-0,5f); glVertex2f(0.0f, 0.5f); glVertex2f(0,5f, -0,5f); глКонец(); /* Поменять местами передний и задний буферы */ glfwSwapBuffers (окно); /* Опрос и обработка событий */ glfwPollEvents(); } glfwTerminate(); вернуть 0; } Например, что библиотека 'fmt', выполнив аналогичные шаги, собирается и работает правильно, и я могу использовать из нее все доступные директивы #include. Все вышеперечисленные библиотеки доступны на conan.io, поэтому они должны быть правильными. Что я делаю не так или неправильно?
//РЕДАКТИРОВАТЬ После нескольких попыток решить проблему я не смог найти решение и в итоге усугубил ситуацию. Чтобы вернуться в предыдущее состояние, мне пришлось добавить абсолютные пути к пакетам, скачанным через Conan, а также к библиотеке GLEW, скачанной с сайта. Вот мой обновленный файл CMakeLists.txt:
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) # Установите пути к файлам конфигурации пакетов GLFW и OpenGL set(glfw3_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") set(opengl_system_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") # Найдите и свяжите GLFW find_package (ТРЕБУЕТСЯ glfw3) # Установите путь к файлам конфигурации пакета GLEW set(GLEW_ROOT "C:/Users/veltr/Downloads/glew-2.1.0-win32/glew-2.1.0") set(GLEW_INCLUDE_DIRS "${GLEW_ROOT}/include") set(GLEW_LIBRARIES "${GLEW_ROOT}/lib/Release/Win32/glew32s.lib") # Найдите и свяжите GLEW find_package (ТРЕБУЕТСЯ GLEW) # Найдите и свяжите OpenGL find_package (ТРЕБУЕТСЯ OpenGL) add_executable(${PROJECT_NAME} Application.cpp) # Свяжите библиотеки с вашим проектом target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::GLEW) target_link_libraries(${PROJECT_NAME} OpenGL::GL) Теперь, когда я создаю проект, я получаю следующий результат:
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Выпуск .. -- Идентификация компилятора C: GNU 13.2.0. -- Идентификация компилятора CXX: GNU 13.2.0. -- Обнаружение информации ABI компилятора C -- Обнаружение информации ABI компилятора C – готово -- Проверка работоспособности компилятора C: C:/msys64/mingw64/bin/cc.exe — пропущено -- Обнаружение особенностей компиляции C -- Обнаружение особенностей компиляции C – готово -- Обнаружение информации ABI компилятора CXX -- Обнаружение информации ABI компилятора CXX – выполнено -- Проверка работы компилятора CXX: C:/msys64/mingw64/bin/c++.exe — пропущено -- Обнаружение особенностей компиляции CXX -- Обнаружение возможностей компиляции CXX – выполнено -- Конан: Цель объявлена «glfw» -- Конан: Цель объявлена как opengl::opengl. -- Найден GLEW: C:/Users/veltr/Downloads/glew-2.1.0-win32/glew-2.1.0/include (найдена версия "2.1.0") -- Найден OpenGL: opengl32 -- Настройка завершена (3.1с) -- Генерация завершена (0,1 с) -- Файлы сборки записаны в: C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build. Как видите, компоновщик нашел GLEW, но, к сожалению, когда я компилирую проект с помощью make, я все равно получаю ту же ошибку.
//РЕДАКТИРОВАНИЕ №2
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) set(glfw3_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") set(opengl_system_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") find_package (ТРЕБУЕТСЯ glfw3) find_package (ТРЕБУЕТСЯ OpenGL) find_package (ТРЕБУЕТСЯ GLEW) include_directories(${GLEW_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} Application.cpp) target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::glew_s) target_link_libraries(${PROJECT_NAME} OpenGL::GL) выход:
(...) -- Обнаружение возможностей компиляции CXX – выполнено -- Конан: Цель объявлена «glfw» -- Конан: Цель объявлена как opengl::opengl. -- Найден OpenGL: opengl32 Ошибка CMake в C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (сообщение): НЕ удалось найти GLEW (отсутствует: GLEW_INCLUDE_DIRS GLEW_LIBRARIES) Стек вызовов (сначала самый последний вызов): C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE) C:/Program Files/CMake/share/cmake-3.27/Modules/FindGLEW.cmake:238 (find_package_handle_standard_args) CMakeLists.txt:8 (найти_пакет) (...)
Я столкнулся с проблемой при создании проекта на C++, и мне нужна помощь в ее разрешении. Я создал проект, в котором управляю зависимостями с помощью Conan, и создал файл CMakeLists.txt для связывания этих библиотек. Однако когда я пытаюсь собрать проект с помощью команды cmake, я сталкиваюсь со следующей ошибкой:
C:/Users/veltr/Desktop/Exercisions/OpenGLProject/Application.cpp:1:10: фатальная ошибка: GLEW/glew.h: такого файла или каталог 1 | #include | ^~~~~~~~~~~~~ компиляция прекращена. make[2]: *** [CMakeFiles/OpenGLProject.dir/Application.cpp.obj] Блок 1 make[1]: *** [CMakeFiles/OpenGLProject.dir/all] Цвет 2 У меня есть файл conan.txt, в котором я указываю зависимости, которые будут установлены с помощью conan install. Я создал файл CMakeLists.txt для связи необходимых библиотек. Кажется, что проект собирается без ошибок, но я сталкиваюсь с упомянутой фатальной ошибкой, когда пытаюсь скомпилировать тестовый код для проверки функциональности.
[*]
conanfile.txt
[требуется] OpenGL/система glfw/3.3.8 свечение/2.2.0 [генераторы] CMakeDeps CMakeToolchain [макет] cmake_layout [*]CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) find_package (ТРЕБУЕТСЯ glfw3) find_package (ТРЕБУЕТСЯ OpenGL) find_package (ТРЕБУЕТСЯ GLEW) add_executable(${PROJECT_NAME} Application.cpp) target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::glew_s) target_link_libraries(${PROJECT_NAME} OpenGL::GL) [*]Application.cpp
#include #include int main (недействительный) { окно GLFWwindow*; /* Инициализируем библиотеку */ если (!glfwInit()) вернуть -1; /* Создаем окно оконного режима и его контекст OpenGL */ окно = glfwCreateWindow(640, 480, «Привет, мир», NULL, NULL); если (!окно) { glfwTerminate(); вернуть -1; } /* Делаем контекст окна текущим */ glfwMakeContextCurrent (окно); /* Цикл, пока пользователь не закроет окно */ в то время как (!glfwWindowShouldClose(окно)) { /* Рендеринг здесь */ glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_TRIANGLES); glVertex2f(-0,5f,-0,5f); glVertex2f(0.0f, 0.5f); glVertex2f(0,5f, -0,5f); глКонец(); /* Поменять местами передний и задний буферы */ glfwSwapBuffers (окно); /* Опрос и обработка событий */ glfwPollEvents(); } glfwTerminate(); вернуть 0; } Например, что библиотека 'fmt', выполнив аналогичные шаги, собирается и работает правильно, и я могу использовать из нее все доступные директивы #include. Все вышеперечисленные библиотеки доступны на conan.io, поэтому они должны быть правильными. Что я делаю не так или неправильно?
//РЕДАКТИРОВАТЬ После нескольких попыток решить проблему я не смог найти решение и в итоге усугубил ситуацию. Чтобы вернуться в предыдущее состояние, мне пришлось добавить абсолютные пути к пакетам, скачанным через Conan, а также к библиотеке GLEW, скачанной с сайта. Вот мой обновленный файл CMakeLists.txt:
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) # Установите пути к файлам конфигурации пакетов GLFW и OpenGL set(glfw3_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") set(opengl_system_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") # Найдите и свяжите GLFW find_package (ТРЕБУЕТСЯ glfw3) # Установите путь к файлам конфигурации пакета GLEW set(GLEW_ROOT "C:/Users/veltr/Downloads/glew-2.1.0-win32/glew-2.1.0") set(GLEW_INCLUDE_DIRS "${GLEW_ROOT}/include") set(GLEW_LIBRARIES "${GLEW_ROOT}/lib/Release/Win32/glew32s.lib") # Найдите и свяжите GLEW find_package (ТРЕБУЕТСЯ GLEW) # Найдите и свяжите OpenGL find_package (ТРЕБУЕТСЯ OpenGL) add_executable(${PROJECT_NAME} Application.cpp) # Свяжите библиотеки с вашим проектом target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::GLEW) target_link_libraries(${PROJECT_NAME} OpenGL::GL) Теперь, когда я создаю проект, я получаю следующий результат:
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Выпуск .. -- Идентификация компилятора C: GNU 13.2.0. -- Идентификация компилятора CXX: GNU 13.2.0. -- Обнаружение информации ABI компилятора C -- Обнаружение информации ABI компилятора C – готово -- Проверка работоспособности компилятора C: C:/msys64/mingw64/bin/cc.exe — пропущено -- Обнаружение особенностей компиляции C -- Обнаружение особенностей компиляции C – готово -- Обнаружение информации ABI компилятора CXX -- Обнаружение информации ABI компилятора CXX – выполнено -- Проверка работы компилятора CXX: C:/msys64/mingw64/bin/c++.exe — пропущено -- Обнаружение особенностей компиляции CXX -- Обнаружение возможностей компиляции CXX – выполнено -- Конан: Цель объявлена «glfw» -- Конан: Цель объявлена как opengl::opengl. -- Найден GLEW: C:/Users/veltr/Downloads/glew-2.1.0-win32/glew-2.1.0/include (найдена версия "2.1.0") -- Найден OpenGL: opengl32 -- Настройка завершена (3.1с) -- Генерация завершена (0,1 с) -- Файлы сборки записаны в: C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build. Как видите, компоновщик нашел GLEW, но, к сожалению, когда я компилирую проект с помощью make, я все равно получаю ту же ошибку.
//РЕДАКТИРОВАНИЕ №2
cmake_minimum_required (ВЕРСИЯ 3.27) проект (OpenGLProject) set(glfw3_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") set(opengl_system_DIR "C:/Users/veltr/Desktop/Exercisions/OpenGLProject/build/Release/generators") find_package (ТРЕБУЕТСЯ glfw3) find_package (ТРЕБУЕТСЯ OpenGL) find_package (ТРЕБУЕТСЯ GLEW) include_directories(${GLEW_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} Application.cpp) target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} GLEW::glew_s) target_link_libraries(${PROJECT_NAME} OpenGL::GL) выход:
(...) -- Обнаружение возможностей компиляции CXX – выполнено -- Конан: Цель объявлена «glfw» -- Конан: Цель объявлена как opengl::opengl. -- Найден OpenGL: opengl32 Ошибка CMake в C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (сообщение): НЕ удалось найти GLEW (отсутствует: GLEW_INCLUDE_DIRS GLEW_LIBRARIES) Стек вызовов (сначала самый последний вызов): C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE) C:/Program Files/CMake/share/cmake-3.27/Modules/FindGLEW.cmake:238 (find_package_handle_standard_args) CMakeLists.txt:8 (найти_пакет) (...)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Пакет vcpkg «Неустранимая ошибка: Curl/curl.h: Нет такого файла или каталога» при компиляции
Anonymous » » в форуме C++ - 0 Ответы
- 133 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Неустранимая ошибка: SFML/Graphics.hpp: такого файла или каталога не существует.
Anonymous » » в форуме C++ - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-