CMake и Conan: неустранимая ошибка — нет такого файла или каталога дляC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 CMake и Conan: неустранимая ошибка — нет такого файла или каталога для

Сообщение Anonymous »


Я столкнулся с проблемой при создании проекта на 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 (найти_пакет) (...)
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»