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?

More than 3 years have passed since last update.

Eclipse CDTでGitに落ちてるライブラリを静的ライブラリにするまで

Last updated at Posted at 2020-11-20

みなさ~~んC++の闇に飲まれていますか~~~?
なんであんなに暗黙に動作することが多いんでしょうねJava・Pythonからやってきた自分は心が折れそうです。

注意!!

この記事は

  • Eclipse Version: 2020-09 (4.17.0)
  • GCC 4.9.0
  • 動作環境: Beagle Bone Black(ARMプロセッサ)
  • Windows PCでクロスコンパイルして転送

という極めて時代遅れなコンパイラと特殊な動作環境での結果をもとに書かれています。ほかの環境で確実に動作するかは保証できませんのであしからず・・・

.a(静的ライブラリ化)する使用ライブラリ

手順

1.cloneしてくる

zipで落としてくるなり、cloneするなりご自由に。

2.Eclipseを起動する

起動したらNew Project→C++ Managed Build→Executable, Empty~を選択→Cross GCC→あとはクロスコンパイルのパスとか設定する。

ここで下の画像二枚目のようにExecutableのEmptyを選択するのがキモ。

スクリーンショット 2020-11-21 022920.png

スクリーンショット 2020-11-21 023033.png

3. ライブラリを作成するための各種設定

プロジェクトがEmptyなのでプロジェクト名を右クリックしてNew→Source Folderでsrcという名前のフォルダを追加する。

スクリーンショット 2020-11-21 023445.png

そして上部のProject→PropertiesでProjectの設定を開く。なぜか押せないという人は一回Project Explorerで選択してからやること。

スクリーンショット 2020-11-21 024002.png

下記の画像のように設定を変更する。ConfigurationをRelease、Artifact TypeをStatic Libraryにする。Applyを押して終了。
スクリーンショット 2020-11-21 024318.png

また、必要であればC++バージョンを指定する。
スクリーンショット 2020-11-21 024530.png

ところでなんでBBBはLinux Kernel3.x以降slots捨てたんでしょうかね。メンテが大変過ぎたみたいなこと書いてあったけど、これじゃ一から理解するのも大変だし過去の資料が丸々役に立たなくなってなんにもなりませんでした。とてもつらいです。Kernelが上げられないせいでC++20はもちろん完全なC++14も使えないし大変困った。なんかいい方法ないですかね。

4. コンパイル

スクリーンショット 2020-11-21 025733.png

Project Explorerからプロジェクトを右クリック→Build Configuration, Set activeでReleaseを選択。
コンパイルボタンを押す。するとプロジェクトのルートにReleaseフォルダが作られ、その中に○○.aというものが出来上がっているはず。

5. 使用する側のプロジェクトでインクルードする

スクリーンショット 2020-11-21 030226.png
インクルードヘッダが入ったフォルダを指定する。クローンしたライブラリのフォルダから適当に抜いておく。

スクリーンショット 2020-11-21 030326.png
ここで指定するライブラリの実体、先ほど作ったファイルの名前は頭の"lib"と拡張子の".a"はつけないこと。つけるとリンクできません。

スクリーンショット 2020-11-21 030407.png
ここにはライブラリのファイルを探すディレクトリを選択しておく。

6. 適当にインクルードして実行

完成!!

Main.cpp

#include <iostream>
#include <string>
#include <fmt/core.h>
#include <stdio.h>

using namespace std;

int main() {
  fmt::print("Don't {}\n", "panic");
  return 0;
}

スクリーンショット 2020-11-21 031314.png

本当にC++20使いたい
PythonかJavaの世界に帰りたい・・・

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?