简体   繁体   English

在 CMake 项目中包含 SOIL2 库

[英]Including SOIL2 library in a CMake project

I'm trying to include SOIL2 in my C++ OpenGL project.我正在尝试将 SOIL2 包含在我的 C++ OpenGL 项目中。

So far I've到目前为止我已经

  • downloaded the library from https://github.com/SpartanJ/SOIL2https://github.com/SpartanJ/SOIL2下载库
  • built it by running premake 4 and make.通过运行 premake 4 和 make 构建它。
  • copied the src/SOIL2/ directory to /usr/local/include将 src/SOIL2/ 目录复制到 /usr/local/include
  • tried adding libsoil2-debug.a to /usr/local/lib尝试将 libsoil2-debug.a 添加到 /usr/local/lib
  • followed various examples of ways to include libraries with CMake遵循使用 CMake 包含库的各种方法示例

Platform is MacOS (Catalina) I'm still new to CMake, so I'm pretty sure that's where my problem is.平台是 MacOS (Catalina) 我还是 CMake 的新手,所以我很确定这就是我的问题所在。

At the moment, my CMakeLists file looks like this:目前,我的 CMakeLists 文件如下所示:

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, the file where I'm including SOIL, looks like this:我包含 SOIL 的文件 Texture.hpp 如下所示:

#include <GL/glew.h>
#include <SOIL2/SOIL2.h>
#include <string>

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

  private:
    unsigned int m_ID;
};

And these are my errors when I run make:这些是我运行 make 时的错误:

$ 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

Any help appreciated!任何帮助表示赞赏!

looks like the libsoil2-debug.a couldn't be found.看起来找不到 libsoil2-debug.a。 Try to add /usr/local/lib into your CMAKE_PREFIX_PATH :尝试将 /usr/local/lib 添加到您的CMAKE_PREFIX_PATH 中

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

somewhere on the top of your CMakeList.txt file CMakeList.txt 文件顶部的某处

Finally got project to build, using the following CMakeLists file.最终使用以下 CMakeLists 文件构建项目。 Thanks for the replies!感谢您的回复!

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}
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM