【问题标题】:How can I use Visual Studio Team Services to build/compile a project that has dependent APIs/Libraries如何使用 Visual Studio Team Services 构建/编译具有依赖 API/库的项目
【发布时间】:2018-10-23 07:53:20
【问题描述】:

我正在尝试学习使用 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 Community 作为我的 IDE,当然还有用于代码存储库/构建的 Visual Studio 网站。

我希望我提供了足够的细节。

【问题讨论】:

  • 您是如何引用 SDL 依赖项的?当您使用 TFS 构建时,您引用的源需要与本地相同的位置。

标签: visual-studio tfs build azure-devops sdl


【解决方案1】:

一般来说,这是包管理解决的问题。这个想法是你有一个包提要,其中外部依赖项被版本化和存储,你可以在构建时检索它们。

很遗憾,VSTS 包管理源仅支持 NPM、Maven 和 NuGet 包。 C++ 生态系统实际上并没有真正的包管理工具。我能找到的最接近的是柯南。 SDL2 似乎是通常在系统范围内预先安装的东西(在 Linux 上,通过yumapt)。

这里有一些可能性:

  • (假设使用 Git 进行版本控制)将外部依赖项存储在 Git-LFS 支持的 Git 子模块中,并通过相对路径引用依赖项。
  • (假设 TFVC 用于版本控制)将外部依赖项存储在 TFVC 存储库中并通过相对路径引用依赖项
  • 使用私有构建代理并预安装依赖项
  • 调查 Conan 作为 SDL2 的包管理器 - 这看起来很有希望,但我现在没有时间深入研究它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 2016-11-17
    • 2016-08-18
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多