Я пытаюсь создать кроссплатформенное приложение openGL на macos, используя Clion. Сценарий Cmake правильно находит библиотеку assimp, но не может связать ее.
Я попытался переустановить assimp, затем перекомпилировать его. Затем я проверил, выполняет ли компиляция вручную эту работу (что удивительно).
Вот команда: clang main.cpp -std=c++11 -framework OpenGL -lglfw -lassimp -lglew -o main
(работает и с g ++).
Вот мой CmakeList.txt:
cmake_minimum_required(VERSION 3.12)
project(OpenGlSetup)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/Modules/")
message(CMAKE_MODULE_PATH : ${PROJECT_SOURCE_DIR}/Modules/)
set(SOURCE_FILES main.cpp)
add_executable(OpenGlSetup ${SOURCE_FILES})
find_package(ASSIMP REQUIRED)
IF (NOT ASSIMP_FOUND)
message(WARNING ASSIMP-NOT-FOUND : ${ASSIMP_INCLUDE_DIRS})
ENDIF()
*** rest of the libraries are loaded in the same way, and they load properly (project compiles and run provided i remove assimp parts) **
include_directories(${OPENGL_INCLUDE_DIR} ${GLM_INCLUDE_DIRS} ${ASSIMP_INCLUDE_DIRS})
link_directories(${ASSIMP_INCLUDE_DIRS})
target_link_libraries(OpenGlSetup ${OPENGL_LIBRARY} ${GLEW_LIBRARY} ${ASSIMP_LIBRARIES} glfw)
Вот мое заявление:
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
#include <cmath>
#include <assimp/scene.h>
#include <assimp/Importer.hpp>
static void glfwError(int id, const char* description)
{
std::cout << description << std::endl;
}
int main(int argc, char *argv[]) {
if (!glfwInit()) {
printf("failed to initialize GLFW.\n");
return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, true);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
auto window = glfwCreateWindow(1000, 600, "awesome", nullptr, nullptr);
if (!window) {
return -1;
}
glfwMakeContextCurrent(window);
if (glewInit()) {
printf("failed to initialize OpenGL\n");
return -1;
}
printf("OpenGL %s, GLSL %s\n", glGetString(GL_VERSION), glGetString(GL_SHADING_LANGUAGE_VERSION));
while(!glfwWindowShouldClose(window)) {
glClearColor(0.f,
0.f,
1.f,
1.f
);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
};
Assimp::Importer importer;
aiScene* scene;
return 0;
}
Ошибка:
[ 50%] Building CXX object CMakeFiles/OpenGlSetup.dir/main.cpp.o
[100%] Linking CXX executable OpenGlSetup
ld: library not found for -lassimp
clang: error: linker command failed with exit code 1 (use -v to see. invocation)
make[3]: *** [OpenGlSetup] Error 1
make[2]: *** [CMakeFiles/OpenGlSetup.dir/all] Error 2
make[1]: *** [CMakeFiles/OpenGlSetup.dir/rule] Error 2
make: *** [OpenGlSetup] Error 2