我正在创建新的edu项目。以下是项目结构:
├── 3rd-party
│ ├── glew
│ ├── glfw
│ ├── CMakeList.txt
├── src
│ ├── main.cpp
├── CMakeList.txt
第三方Cmakelist看起来是这样的:
# GLFW
add_subdirectory(glfw)
# GLEW
find_package(GLEW REQUIRED)
我简单地用来自github的命令安装了它们
git clone https://github.com/glfw/glfw glfw
git clone https://github.com/nigels-com/glew.git glew
(因为glew在根目录中没有CMakeList,所以我不得不编写find_package而不是add_subdirectory)
我的主要Cmake是这样的:
cmake_minimum_required(VERSION 3.17)
project(test)
set(CMAKE_CXX_STANDARD 17)
# Source files
add_executable(test src/main.cpp)
# dependency
add_subdirectory(3rd-party)
find_package(OpenGL)
target_link_libraries(test PUBLIC opengl32 glfw glew)
我犯了个错误:
x86_64-w64-mingw32/bin/ld.exe: cannot find -lglew
链接器似乎没有找到glew库,但我不知道为什么,( IDE告诉我,Cmake本身没有错误)
我想在我的项目结构中有第三部分,这对我来说更方便。
如何纠正错误?我想说的是,我试图使CMake尽可能简单。
发布于 2022-09-02 05:38:06
更新:首先,请参阅此关于cmake和glew的问题。我在想这个问题是不是重复的.
引用用这个GitHub问题编写的图书馆维护人员的话
对于git子模块,我建议使用:Perlmint/glew-cmake,而不是这个上游存储库。 这里的长期策略是维护GLEW代码生成器的历史,而不是生成代码的相应历史。一般的建议是使用当前的GLEW版本,而不是使用正在进行中的主分支。 我确实很欣赏这种安排是过时的,但事实上格鲁已经存在了很长时间。
请注意你的评论
因为glew根目录中没有CMakeList
它确实有一个CMakeLists.txt文件:/build/cmake/
。您可以找到关于它的位置和库这里的这里情况的讨论。
至于你眼前的问题,请在评论部分引用你的话:
如果我把
GLEW::glew
改为libglew_static
,一切都很好!
https://stackoverflow.com/questions/73575450
复制相似问题