0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】Windows環境において、vcpkg(クラシックモード)とCMakeを用いてライブラリを管理する

Posted at

vcpkgとCMakeを用いてライブラリを管理する方法について述べる。
私は普段VSCodeとGCCのコンパイラを用いてプログラミングを行っている。その環境でvcpkgを用いてライブラリ管理を行う際の方法について記す。

丸投げ

大体は上の記事の通りだ。ただ、上の記事はマニュフェストモードでの動作であり、ハマったポイントもあったので、忘れないうちにメモしておきたい。

ハマったポイント:CMakePresetsにおけるTripletの指定漏れ

マニュフェストモード、クラシックモード双方に言えることだが、自分の環境に対応した適切なTripletが指定されていないと、以下のようなエラーが出る。

undefined reference to \`__imp__ZN3fmt3v116vprintENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_7contextEEE'

これを解決するのには、以下の内容が役に立った。

この記事の内容を踏まえて、実行する環境に合わせてCMakePresets.jsonを以下のように変更した。

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
        "VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"
      }
    }
  ]
}

ハマったポイント:マニュフェストモードとクラシックモードの差異

クラシックモードでは、あらかじめvcpkgを用いてライブラリをインストールしておく必要がある。また、パッケージのインストールの際にも正しいTripletを指定する必要がある。自分の環境の場合は、コマンドラインに以下のように入力すればよかった。

vcpkg install fmt:x64-mingw-dynamic

正しいTripletを指定することでこの問題を解決できるようだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?