我正在尝试将SOIL2包含在我的C++ OpenGL项目中。
到目前为止我
平台是MacOS (Catalina),我对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是我包含土壤的文件,如下所示:
#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任何帮助都很感激!
发布于 2020-04-05 20:08:01
最后使用下面的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}
)发布于 2020-04-05 19:45:21
看来没能找到libsoil2 2-调试器。尝试将/usr/local/lib添加到路径中:
list(APPEND CMAKE_PREFIX_PATH "/usr/local/lib")
在CMakeList.txt文件顶部的某个地方
https://stackoverflow.com/questions/61046994
复制相似问题