Настройка CMake raylib-cpp для VScode

Я установил raylib и успешно запустил примеры файлов .c в VSCode и Notepad++.

Я пытаюсь выполнить файлы из этого репозитория raylib-cpp/projects /CMake
Я не менял файлы из репозитория и запускал команду cmake непосредственно из VSCoode.
main.cpp

#include "raylib-cpp.hpp"
int main()
{
    int screenWidth = 800;
    int screenHeight = 450;
    raylib::Color background(RAYWHITE);
    raylib::Color textColor(LIGHTGRAY);
    raylib::Window w(screenWidth, screenHeight, "raylib [core] example - basic window");
    SetTargetFPS(60);
    while (!w.ShouldClose())
    {
        BeginDrawing();
        background.ClearBackground();
        textColor.DrawText("Success!", 190, 200, 20);
        EndDrawing();
    }
    return 0;
}

Я попытался запустить команды, как указано в этом репозитории github: raylib-CMake- пример, но были ошибки, когда я запускал команду make из git bash в папке build, я тоже пробовал mingw32-make, но это не сработало. Затем я установил расширение инструментов CMake в VSCode
Расширение инструментов CMake

и запустил команду Build из расширения, но получил сообщение об ошибке:
inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]

Я использую Visual Studio Build Tools 2017 Release-amd64 в качестве комплекта.
Когда я попытался запустить файлы примеров .c из raylib, мне пришлось изменить версию opengl с 33 на 21, чтобы окно работало правильно.
Моя папка выглядит так:
введите здесь описание изображения
Выходной журнал выглядит следующим образом: \

[main] Building folder: Game2CPP raylib-cpp-example
[build] Starting build
[proc] Executing command: F:\Code\CPP\Raylib\cmake-3.18.2-win64-x64\bin\cmake.EXE --build f:/Code/CPP/Raylib/TestGames/Game2CPP/build --config Debug --target raylib-cpp-example -- /maxcpucount:6
[build] Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
[build] Copyright (C) Microsoft Corporation. All rights reserved.
[build] 
[build]   glfw_objlib.vcxproj -> F:\Code\CPP\Raylib\TestGames\Game2CPP\build\_deps\raylib-build\src\external\glfw\src\glfw_objlib.dir\Debug\glfw_objlib.lib
[build]   glfw.vcxproj -> F:\Code\CPP\Raylib\TestGames\Game2CPP\build\_deps\raylib-build\src\external\glfw\src\Debug\glfw3.lib
[build]   raylib_static.vcxproj -> F:\Code\CPP\Raylib\TestGames\Game2CPP\build\_deps\raylib-build\src\Debug\raylib_static.lib
[build]   main.cpp
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(206): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(207): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(208): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(209): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(210): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(211): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(212): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(213): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(214): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(215): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(216): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(217): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(218): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(219): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(220): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(221): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(222): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(223): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(224): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(225): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(226): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(227): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(228): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(229): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(230): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[build] f:\code\cpp\raylib\testgames\game2cpp\build\_deps\raylib-cpp-src\include\./Color.hpp(231): error C7525: inline variables require at least '/std:c++17' [F:\Code\CPP\Raylib\TestGames\Game2CPP\build\raylib-cpp-example.vcxproj]
[cmakefileapi-parser] Code model version (2.1) of cmake-file-api is unexpected. Expecting (2.0). IntelliSense configuration may be incorrect.
[cmakefileapi-parser] Code model version (2.1) of cmake-file-api is unexpected. Expecting (2.0). IntelliSense configuration may be incorrect.
[build] Build finished with exit code 1

person llsanketll    schedule 07.09.2020    source источник


Ответы (1)


Я вижу, что о проблеме уже сообщалось https://github.com/RobLoach/raylib-cpp/issues/51. Я предполагаю, что стандарт компилятора С++ по умолчанию для автора установлен на 17, поэтому на его машине нет проблем. Однако вы на шаг позади. Встроенные переменные, как предполагает ваш компилятор, доступны с С++ 17. Похоже, вы используете какой-то старый стандарт (но не уверен, какой именно). Не уверен, какой из них используется по умолчанию для компилятора cpp Visual Studio.

Вы можете установить стандарт С++ для своего проекта через CMake следующим образом:

set_property(TARGET tgt PROPERTY CXX_STANDARD 11) 

Учитывая, что эта библиотека кажется «только для заголовков», вы можете установить CXX_STANDARD в 17 только для своего исполняемого файла. Однако, если в этой библиотеке raylib есть какие-то объекты, вам нужно установить для CXX_STANDARD значение 17 в https://github.com/RobLoach/raylib-cpp/blob/master/projects/CMake/CMakeLists.txt. для raylib-cpp-example цели.

person Marek Piotrowski    schedule 07.09.2020
comment
Спасибо, мне пришлось изменить версию cpp на set(CMAKE_CXX_STANDARD 17) , и у меня возникли проблемы с открытием окна, поэтому я изменил версию opengl на set(GRAPHICS GRAPHICS_API_OPENGL_21), и она отлично работает :) - person llsanketll; 07.09.2020
comment
Рад слышать! Был бы признателен, если бы вы приняли ответ тогда. Спасибо. - person Marek Piotrowski; 07.09.2020