Как я могу использовать Visual Studio Team Services для сборки / компиляции проекта, который имеет зависимые API / библиотеки - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь научиться использовать Visual Studio Team Services. У меня есть простое приложение типа Hello World, у которого есть зависимости, написанные кем-то другим. В частности, я использую SDL2 для отображения окна в течение нескольких секунд. Я могу сделать это локально просто отлично, но когда я собираю его онлайн, используя процесс онлайн-сборки VSTS, он жалуется, что не может найти никаких зависимостей SDL, таких как «SDL.h».

Это пример кода:

#include <SDL.h>
#include <iostream>

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main(int argc, char* argv[])
{
    SDL_Window* window = nullptr;
    SDL_Surface* screenSurface = nullptr;

    if (SDL_Init(SDL_INIT_VIDEO) < 0)
        std::cout << "SDL could not initialize. SDL_Error: " << SDL_GetError() << std::endl;
    else
    {
        window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
        if (window == nullptr)
            std::cout << "Window could not be created. SDL Error: " << SDL_GetError();
        else
        {
            screenSurface = SDL_GetWindowSurface(window);
            SDL_FillRect(screenSurface, nullptr, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
            SDL_UpdateWindowSurface(window);
            SDL_Delay(2000);
        }
    }

    SDL_DestroyWindow(window);
    window = nullptr;
    screenSurface = nullptr;
    SDL_Quit();

    return 0;
}

Какие шаги мне нужно выполнить, чтобы создать что-то в сети, требующее предварительно построенных внешних зависимостей?

Я использую сообщество Visual Studio 2015 в качестве своей среды IDE и, конечно, веб-сайт Visual Studio для хранилищ / построения кода.

Надеюсь, я дал достаточно подробностей.

1 Ответ

0 голосов
/ 13 мая 2018

В общем, это что-то решается с помощью управления пакетами. Идея состоит в том, что у вас есть фид пакетов, в котором внешние зависимости хранятся в версиях и хранятся, и вы можете получить их во время сборки.

К сожалению, каналы управления пакетами VSTS поддерживают только пакеты NPM, Maven и NuGet. Экосистема C ++ не имеет де-факто инструмента управления пакетами; самый близкий я могу найти это Конан. SDL2, кажется, является чем-то, что обычно предустановлено во всей системе (в Linux через yum или apt).

Вот несколько возможностей:

  • (Предполагается, что Git для управления версиями) Сохраните вашу внешнюю зависимость в подмодуле Git, поддерживаемом Git-LFS, и ссылайтесь на зависимость через относительный путь.
  • (Предполагается, что TFVC для управления версиями) Сохраните вашу внешнюю зависимость в репозитории TFVC и сослаться на эту зависимость по относительному пути
  • Используйте частный агент сборки и предварительно установите зависимость
  • Исследуйте Конана как менеджера пакетов для SDL2 - это выглядит многообещающе, но у меня нет времени сейчас в этом разбираться
...