无法将 glfw 与 Ubuntu 中的 QtCreator 中的 CMake 链接
Can't link glfw with CMake in QtCreator in Ubuntu
我正在尝试使用 cmake 将 glfw 库链接到我的项目。
我在elementary OS(Ubuntu 14.04)上使用QtCreator 3.6。
这是我的代码:
#include <iostream>
#include <GLFW/glfw3.h>
int main() {
std::cout << "Hello World!" << std::endl;
if(!glfwInit()) {
std::cout << "Error" << std::endl;
} else {
std::cout << "Success" << std::endl;
}
glfwTerminate();
}
这是我的CMakeLists.txt:
cmake_minimum_required (VERSION 2.8)
project (test)
add_library(glfw3 main.cpp)
include_directories("${PROJECT_SOURCE_DIR}/glfw/include")
add_subdirectory(glfw)
add_executable(test main.cpp)
target_link_libraries (test glfw ${GLFW_LIBRARIES})
这个带有这个CMake文件的代码成功地编译并通过终端(cmake/make/./test)运行,但是当我在QtCreator中编译它时,我得到了很多"未定义的引用"错误。
我会继续寻找解决方案,但也许有人可以在这里帮助我。
谢谢。
这是我的文件夹结构,包括 GLFW、GLAD、CMAKE 和 QtCreator。
首先从存储库安装 GLFW 和依赖项:
sudo apt install cmake xorg-dev libglu1-mesa-dev libglfw3-dev libglfw3
或
构建它
version="3.2.1" &&
wget "https://github.com/glfw/glfw/releases/download/${version}/glfw-${version}.zip" &&
unzip glfw-${version}.zip &&
cd glfw-${version} &&
sudo apt-get install cmake xorg-dev libglu1-mesa-dev &&
sudo cmake -G "Unix Makefiles" &&
sudo make &&
sudo make install
您可以从 https://glad.dav1d.de/下载
我的项目结构很高兴:
test
CMakeLists.txt
source>main.cpp
lib
glad
include>glad>glad.h
src>glad.c
我的清单:
cmake_minimum_required(VERSION 2.8)
project(test)
# Source files
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")
set(SOURCES "${SRC_DIR}/main.cpp")
# Executable definition and properties
add_executable(${PROJECT_NAME} ${SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE "${SRC_DIR}")
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
TARGET_LINK_LIBRARIES(test -lglfw -lGL -lX11
-lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lm -pthread)
# glad
set(GLAD_DIR "${LIB_DIR}lib/glad")
add_library("glad" "${GLAD_DIR}/src/glad.c")
target_include_directories("glad" PRIVATE "${GLAD_DIR}/include")
target_include_directories(${PROJECT_NAME} PRIVATE "${GLAD_DIR}/include")
target_link_libraries(${PROJECT_NAME} "glad" "${CMAKE_DL_LIBS}")
测试是否一切正常:
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <stdio.h>
namespace {
void errorCallback(int error, const char* description) {
fprintf(stderr, "GLFW error %d: %sn", error, description);
}
GLFWwindow* initialize() {
int glfwInitRes = glfwInit();
if (!glfwInitRes) {
fprintf(stderr, "Unable to initialize GLFWn");
return nullptr;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
GLFWwindow* window = glfwCreateWindow(1280, 720, "InitGL", nullptr, nullptr);
if (!window) {
fprintf(stderr, "Unable to create GLFW windown");
glfwTerminate();
return nullptr;
}
glfwMakeContextCurrent(window);
int gladInitRes = gladLoadGL();
if (!gladInitRes) {
fprintf(stderr, "Unable to initialize gladn");
glfwDestroyWindow(window);
glfwTerminate();
return nullptr;
}
return window;
}
}
int main(int argc, char* argv[]) {
glfwSetErrorCallback(errorCallback);
GLFWwindow* window = initialize();
if (!window) {
return 0;
}
// Set the clear color to a nice green
glClearColor(0.15f, 0.6f, 0.4f, 1.0f);
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
相关文章:
- QtCreator with C 库中的链接器问题
- 禁用QtCreator中的特定警告
- QtCreator 中的"Fatal Error C1083: Cannot open include file"
- 带有cmake的qtCreator,编辑器中未正确解析__cplusplus值
- 测试项目中生成文件中的 Qtcreator 错误
- qtcreator中的Rosbag阅读器
- Qt中的非类方法(带有qtcreator)未解析的外部符号
- 在Linux中编译基本QtWidgets应用程序时的QtCreator问题
- Windows上的QtCreator中的链接问题
- 如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点
- 无法将 glfw 与 Ubuntu 中的 QtCreator 中的 CMake 链接
- 在打开OpenCV的QtCreator中找不到体系结构x86_64的符号
- 基于QTCreator中的组合框选择修改样式表
- 顶级qml文件中的Repeater元素导致QtQuick 1.1(QtCreator 3.5.1)中的绑定循环
- printf()与qDebug()在QtCreator中的执行顺序
- 链接到QTCreator中的user32.lib
- 在windows上,链接器忽略qtcreator中的/openmp
- 使用QTCreator中的库未定义参照
- 如何在Windows上检测QtCreator中的内存泄漏
- 链接/使用QtCreator中的外部库