Включение библиотеки SOIL2 в проект CMake - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь включить SOIL2 в свой проект C ++ OpenGL.

Пока что

  • скачал библиотеку из https://github.com/SpartanJ/SOIL2
  • собрал его, запустив premake 4 и make.
  • скопировал каталог src / SOIL2 / в / usr / local / include
  • попытался добавить libsoil2-debug.a в / usr / local / lib
  • следовал различным примерам способов включения библиотек в CMake

Платформа MacOS (Каталина) Я все еще новичок в CMake, так что я почти уверен, что это где моя проблема.

В данный момент мой файл 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, файл, в который я включаю SOIL, выглядит так:

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

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

  private:
    unsigned int m_ID;
};

И вот мои ошибки при запуске 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

Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Наконец получил проект для сборки, используя следующий файл 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)
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}
)
1 голос
/ 05 апреля 2020

похоже, что libsoil2-debug.a не может быть найден. Попробуйте добавить / usr / local / lib в CMAKE_PREFIX_PATH :

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

где-нибудь в верхней части файла CMakeList.txt

...