CMake не может найти GLEW - PullRequest
       37

CMake не может найти GLEW

0 голосов
/ 08 марта 2020

Я пытаюсь связать GLEW с моим проектом CMake без особого успеха. Видимо, он не может найти GLEW_LIBRARIES.

Я использую CLion 2019.3.4 и MinGW.

Пока я пробовал следующие вещи:

  1. Определение GLEW_LIBRARIES
  2. Определение GLEW_STATIC_LIBRARIES и GLEW_SHARED_LIBRARIES в качестве файла FindGLEW.cmake, который документирует это (строки с 41 по 45).
  3. Выполнение обоих указанных выше действий.
  4. Выполнение 1 и 2, за исключением того, что вместо LIBRARIES это LIBRARY.

Я не знаю, что еще делать.

Вот списки CMake для ссылка:

cmake_minimum_required(VERSION 3.15)
project(myProject)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
set(CMAKE_MODULE_PATH "${CMAKE_HOME_DIRECTORY}/cmake_modules/")

# This part of the code is actually in a separate file,
# called LibrarySetup.cmake
#
# include(LibrarySetup.cmake)

if(WIN32)
    set(LIB_PREFIX "")
    set(LIB_SUFFIX ".dll")
elseif(UNIX)
    set(LIB_PREFIX "lib")
    set(LIB_SUFFIX ".lib")
endif()

set(GLFW_INCLUDE_DIR "include/glfw/include/")
set(GLFW_LIBRARY "include/glfw/lib/${LIB_PREFIX}glfw3${LIB_SUFFIX}")

set(GLEW_INCLUDE_DIR "include/glew/include/")
set(GLEW_SHARED_LIBRARIES "include/glew/lib/Release/Win32/glew32.lib")
set(GLEW_STATIC_LIBRARIES "include/glew/lib/Release/Win32/glew32s.lib")
set(GLEW_VERBOSE)

# And here the external file ends.

find_package(GLFW REQUIRED)
find_package(GLEW REQUIRED)

include_directories(${GLFW_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})

add_subdirectory(include/glfw)
add_executable(myProject main.cpp)
target_link_libraries(myProject ${GLFW_LIBRARY} ${GLEW_LIBRARIES})

И ошибки:

~\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\193.6494.38\bin\cmake\win\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" "~\Documents\CLion Projects\myProject"
CMake Error at ~/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/193.6494.38/bin/cmake/win/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find GLEW (missing: GLEW_LIBRARIES)
Call Stack (most recent call first):
  ~/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/193.6494.38/bin/cmake/win/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  ~/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/193.6494.38/bin/cmake/win/share/cmake-3.15/Modules/FindGLEW.cmake:207 (find_package_handle_standard_args)
  CMakeLists.txt:12 (find_package)


-- Configuring incomplete, errors occurred!
See also "~/Documents/CLion Projects/myProject/cmake-build-debug/CMakeFiles/CMakeOutput.log".

[Failed to reload]

1 Ответ

0 голосов
/ 08 марта 2020

Для версии CMake вашего скрипта требуются корабли с FindGLEW , которые должны выполнять работу по поиску библиотеки для вас (т. Е. Установить цель Glew, определить пути include и library, et c). Вы можете просмотреть документацию для этого модуля, выполнив:

cmake --help-module findglew

Предоставление включаемых путей и определений библиотеки GLEW для вашего исполняемого файла должно быть простым:

find_package(GLEW REQUIRED)
add_executable(myProject main.cpp)
target_link_libraries(myProject GLEW::GLEW)

Это обеспечит пути include и lib через транзитивную зависимость цели GLEW :: GLEW. Вам не нужно устанавливать пути вручную, как в вашем примере. Модуль поиска будет выполнять поиск в системных местах по умолчанию для библиотеки. Если он не может найти его, вы можете дать ему подсказку, установив переменную GLEW_ ROOT, указывающую на локальное местоположение установки.

set(GLEW_ROOT <my location of GLEW>)

Как вы установили GLEW? Можете ли вы указать, где он установлен в вашей системе, и это может упростить понимание причины сбоя модуля поиска?

...