3
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?

cmakeでdll作る

Last updated at Posted at 2022-10-21

導入

visualstudioとc++でゲームエンジンを作っていて、ユーザの作るカスタムスクリプトからdllを作って、エンジンとくっつけたい。そういう思いからcmakeでdllを作る方法を調べた。

実例

以下のリポジトリで公開。
dllはリンク先のままのlibフォルダを見ればok。

ファイル構造

以下の様なファイル構造。
CMakeLists.txtとheaderフォルダとsrcフォルダにそれぞれ.hファイルと.cppファイルが入っています

D:.
│  CMakeLists.txt
│
├─header
│      Enemy.h
│      goodafternoon.h
│      hello.h
│
└─src
        Enemy.cpp
        goodafternoon.cpp
        hello.cpp

CMakeLists.txtの内容は以下。
それぞれの行にコメントを書いているので、それを見て欲しい。

# cmakeのバージョン
cmake_minimum_required(VERSION 3.1)

# プロジェクト名指定
project(oreorelib CXX)

# srcフォルダー以下のcppファイル一覧をcppfilesという変数に格納
file(GLOB_RECURSE cppfiles RELATIVE ${PROJECT_SOURCE_DIR} ./src/*.cpp)

# dllでビルドすると指定
add_library(oreorelib SHARED ${cppfiles})

# c++11
target_compile_features(oreorelib PRIVATE cxx_std_11)

# include ディレクトリ指定
target_include_directories(oreorelib INTERFACE ./header)

実行コマンド

実際にビルドするときのコマンドの例を以下に示す。

mkdir build
cd build 
cmake ../ -G"Visual Studio 16 2019"
cmake --build .

# 注意
dllの場合は、以下の様に関数にexportするよ的な記述がないと、外部から使用できないので注意。
exportするシンボルがないと、dllファイルと一緒に出来るlibファイルが出来ないので注意。

extern "C" __declspec(dllexport) void hello();

参考

3
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
3
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?