首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SOIL2库包含在CMake项目中

将SOIL2库包含在CMake项目中
EN

Stack Overflow用户
提问于 2020-04-05 17:56:38
回答 2查看 1.4K关注 0票数 2

我正在尝试将SOIL2包含在我的C++ OpenGL项目中。

到目前为止我

  • https://github.com/SpartanJ/SOIL2下载库
  • 通过运行premake4和make构建它。
  • 将src/SOIL2 2/目录复制到/usr/local/include
  • 尝试向/usr/local/lib添加libsoil2 2-调试器。
  • 以下是包含CMake库的各种方法的示例

平台是MacOS (Catalina),我对CMake还不熟悉,所以我很确定这就是我的问题所在。

目前,我的CMakeLists文件如下所示:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.8)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 99)
set(This ComputerGraphicsProgramming)
project(${This} CXX C)

file(GLOB_RECURSE SOURCES src/*.cpp)
file(GLOB_RECURSE SOIL2_SOURCES /usr/local/include/SOIL2/*.c)
add_executable(${This} ${SOURCES} ${HEADERS})

include_directories(
  include
  lib
  /usr/local/include
)
link_directories(
  /usr/local/include
  /usr/local/include/SOIL2
)

find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
find_package(glew REQUIRED)
find_package(glm REQUIRED)
find_library(soil2-debug REQUIRED)

target_link_libraries(${This}
  GLEW::GLEW
  ${OPENGL_LIBRARIES} glfw
  soil2-debug
)

Texture.hpp是我包含土壤的文件,如下所示:

代码语言:javascript
复制
#include <GL/glew.h>
#include <SOIL2/SOIL2.h>
#include <string>

class Texture
{
  public:
    Texture(std::string filename);
    ~Texture();

  private:
    unsigned int m_ID;
};

这些都是我在运行make时的错误:

代码语言:javascript
复制
$ make
[  9%] Linking CXX executable ComputerGraphicsProgramming
ld: library not found for -lsoil2-debug
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ComputerGraphicsProgramming] Error 1
make[1]: *** [CMakeFiles/ComputerGraphicsProgramming.dir/all] Error 2
make: *** [all] Error 2

任何帮助都很感激!

EN

回答 2

Stack Overflow用户

发布于 2020-04-05 20:08:01

最后使用下面的CMakeLists文件构建项目。谢谢你的回复!

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.8)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 99)
set(This ComputerGraphicsProgramming)

project(${This} CXX C)

file(GLOB_RECURSE SOURCES src/*.cpp)
add_executable(${This} ${SOURCES} ${HEADERS})

include_directories(
  include
  /usr/local/include
)

find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
find_package(glew REQUIRED)
find_package(glm REQUIRED)
find_library(SOIL2 soil2-debug)

target_link_libraries(${This}
  GLEW::GLEW
  ${OPENGL_LIBRARIES} glfw
  ${SOIL2}
)
票数 2
EN

Stack Overflow用户

发布于 2020-04-05 19:45:21

看来没能找到libsoil2 2-调试器。尝试将/usr/local/lib添加到路径中:

list(APPEND CMAKE_PREFIX_PATH "/usr/local/lib")

在CMakeList.txt文件顶部的某个地方

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61046994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档