vscode opengl cmake 配置

1. 安装opengl开发环境

brew install glew
https://github.com/glfw/glfw.git
mkdir build
cd build
cmake ..
make 
make install

2. 安装cmake插件

3. 测试代码 test.cpp

#define GLEW_STATIC
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>


#pragma comment( lib, "GLEW.dylib" )

void Render(void)
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    {
        glColor3f(1.0,0.0,0.0);
        glVertex2f(0, .5);
        glColor3f(0.0,1.0,0.0);
        glVertex2f(-.5,-.5);
        glColor3f(0.0, 0.0, 1.0);
        glVertex2f(.5, -.5);
    }
    glEnd();
}

int main(int argc, const char * argv[]) {
    GLFWwindow* win;
    if(!glfwInit()){
        return -1;
    }
    win = glfwCreateWindow(640, 480, "OpenGL Base Project", NULL, NULL);
    if(!win)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    // if(!glewInit())
    // {
    //     return -1;
    // }
    glfwMakeContextCurrent(win);
    while(!glfwWindowShouldClose(win)){
        Render();
        glfwSwapBuffers(win);
        glfwPollEvents();
    }
    glfwTerminate();
    exit(EXIT_SUCCESS);
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.9)

project(glprj)

include_directories(/usr/local/include)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
set( CMAKE_CXX_FLAGS "-std=c++11" )
link_directories(/usr/local/lib)

add_executable(glprj test.cpp)


target_link_libraries(glprj glfw)
target_link_libraries(glprj OpenGL::GL)

编译可能遇到的问题

Error: Undefined symbols for architecture x86_64:
  "_glBegin", referenced from:
      Render() in test.cpp.o
Solution: find_package(OpenGL REQUIRED) find_package(glfw3 REQUIRED) set( CMAKE_CXX_FLAGS
"-std=c++11") target_link_libraries(glprj glfw) target_link_libraries(glprj OpenGL::GL) Error: Undefined symbols for architecture x86_64: "_glewInit", referenced from: _main in test.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [glprj] Error 1 make[1]: *** [CMakeFiles/glprj.dir/all] Error 2 make: *** [all] Error 2

Solution:
Detete glewInit function.

 cmake --build ./build --config Debug --target all -- -j 4
  Error: could not load cache

  Solution:
  step 1: cmake ..
  step 2: cmake --build . --config Debug --target all -- -j 4

 

4. tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "cmake build active file",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "cmake",
            "args":[".."],
            //"args":["--build . --config Debug --target all -- -j 4"],
            //"args":["-G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Debug .."],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Make",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

5. c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

6. launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/glprj",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb",
            //"preLaunchTask": "cmake build active file"

        }
    ]
}

7. 编译生成可执行文件

command + shift + B 选择 cmake build active file, 生成Makefile

再次command + shift + B 选择 Make, 生成可执行文件。

8. 调试

猜你喜欢

转载自www.cnblogs.com/masonl/p/12615039.html