A certain engineer "COMPLEX"

開発メモ その83 Fedora 26 ServerでCMakeから共有ライブラリを作成する

Problem


前回は、Visual Studio CodeからC++で開発を行う環境の構築を行いました。

Visual Studio Codeでの開発情報も増えつつありますが、まだまだLinux上での開発記事は少ないです。
CMakeの知識が少ないと、

  • .a
    Staticライブラリ
  • .so
    Sharedライブラリ

の作成を切り替えることもままなりません。

Solution


Initialize Project

CMake Toolsを使うと、ボイラープレートよろしくプロジェクトのテンプレートを作成することができます。
まず、空のフォルダをVisual Studio Codeで開きます。

次に、コマンドパレットから、CMake: Quick Startを選択または入力します。

次に、プロジェクト名を入力します。

次に、プロジェクトの種別を選択します。

  • Library
    Staticライブラリ
  • Executable
    実行形式モジュール

の2形式を選択できます。Staticライブラリは後で変更できます。
今回は、Libraryを選択。

ビルド構成を選択します。

これでテンプレートが完成します。

Build Project

この状態で、一度ビルドを行います。
コマンドパレットから、CMake: Buildを選択または入力します。

ビルドが成功すると、buildフォルダの配下に、lib<プロジェクト名>.aが生成されます。

テンプレートなので、ソースファイルは、<プロジェクト名>.cppという下記の内容のファイルです。


#include <iostream>

void say_hello(){ std::cout << "Hello, from TestCMake!\n"; }

シンプルですが、これでStaticライブラリが簡単に生成できます。

Create Shared Library (*.so)

続いては、Sharedライブラリを作成する方法です。
CMakeLists.txtを開きます。


add_library(TestCMake TestCMake.cpp)


add_library(TestCMake SHARED TestCMake.cpp)

に変更し、再度ビルドします。
すると、今度は、buildフォルダの配下に、lib<プロジェクト名>.soが生成されます。

Sharedライブラリを作れるようになったので、C#からP/Invokeで呼び出すこともできるようになります。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。