C++と色々

主にC++やプログラムに関する記事を投稿します。

CLionでDXライブラリを動かす

前提としてWindowsOSであり、CLionとMinGWはインストール済みとします。(cmakeはCLionインストール時に一緒に入ります)
私の環境は

  • Windows 8.1
  • CLion 1.0
  • MinGW 不明 g++は4.8.1でした
  • DxLib 3.13d でした。CLionは

www.jetbrains.com

から落とせます。MinGW

sourceforge.net

から落とせます。インストール方法はググれば出てくるのでそちらでお願いします。MinGWはパスを通しておいて下さい。cmd起動してgcc --versionが動けばOKです。

1.DXライブラリをダウンロードする

http://homepage2.nifty.com/natupaji/DxLib/dxdload.html から、上から3つ目のGnu C++用と書かれたDXライブラリを任意のフォルダにダウンロードします。

2.CLionで新規プロジェクトを作成する

CLionを起動し、トップメニューからFile -> New Projectを選択し、任意のタイトル、任意のフォルダを指定して、プロジェクトを作成します。今回はDXSampleというプロジェクトを作成しました。

3.DXライブラリをプロジェクトフォルダ以下にコピーする

1でダウンロードしたDXライブラリをインストールすると、DxLib_GCCというフォルダが出来ます。そのフォルダの中に「プロジェクトに追加すべきファイル_GCC(MinGW)用」というフォルダがあり、その中に4_8_1などのフォルダが有ります。これはMinGWgccのバージョンに対応しているので、あなたの環境のgcc(gcc --versionで確認できるバージョン)と一致したフォルダを新規作成したCLionプロジェクトフォルダにフォルダごとコピーします。今回は私の環境のgccが4.8.1なので4_8_1フォルダを利用します。以下4_8_1と書かれた箇所はそれぞれの環境ごとに適宜読み換えて下さい。

元々CLionのプロジェクトファイルには.ideaというフォルダと、CMakeLists.txtとmain.cppが自動生成されています。ここに4_8_1を置きます。置いたら4_8_1という名前をdxlibという名前に変更します(日本語含まなければ自由だと思います)

4.CMakeLists.txtを編集する

プロジェクト作成時のデフォルトのCMakeLists.txtは以下のようになっています。(CMakeのバージョンとプロジェクト名は適宜置き換えて読んで下さい)

cmake_minimum_required(VERSION 3.1)
project(DXSample)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(DXSample ${SOURCE_FILES})

-std=c++11C++11を使うなら付ける必要があり、使わないのなら消しても構いません。
まず、add_executableの前に

include_directories(./dxlib)
link_directories(./dxlib)

を追加します。(あなたがリネームしたフォルダ名にして下さい。今回の例ではdxlibというだけです)

追加後のCMakeLists.txtは以下のようになります

cmake_minimum_required(VERSION 3.1)
project(DXSample)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

include_directories(./dxlib)
link_directories(./dxlib)

add_executable(DXSample ${SOURCE_FILES})

次に、add_executableの後に以下を追記します

target_link_libraries(
    DXSample
    DxLib
    DxUseCLib
    DxDrawFunc
    jpeg
    png
    zlib
    tiff
    theora_static
    vorbis_static
    vorbisfile_static
    ogg_static
    bulletdynamics
    bulletcollision
    bulletmath
)

これは./dxlib以下のlib何とか.aをリンクしています。
最終的なCMakeLists.txtは以下になります

cmake_minimum_required(VERSION 3.1)
project(DXSample)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

include_directories(./dxlib)
link_directories(./dxlib)

add_executable(DXSample ${SOURCE_FILES})

target_link_libraries(
    DXSample
    DxLib
    DxUseCLib
    DxDrawFunc
    jpeg
    png
    zlib
    tiff
    theora_static
    vorbis_static
    vorbisfile_static
    ogg_static
    bulletdynamics
    bulletcollision
    bulletmath
)

CMakeLists.txtを編集した際に、CMake project needs to reloadedと出た場合はReload changesをクリックして更新処理を行って下さい。

5.main.cppを編集する

プロジェクト作成時には、デフォルトで以下の様なコードが書かれていると思います。

#include <iostream>

using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

これを全て消し、以下のコードにしてみてください。

#include "dxlib/DxLib.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    ChangeWindowMode(TRUE);
    if( DxLib_Init() == -1) {
        return -1 ;
    }
    DrawBox(0, 0, 200, 100, (int) GetColor(255, 0, 0), TRUE);
    WaitKey();
    DxLib_End();
    return 0;
}

くどいようですが、#include "dxlib/Dxlib,h"dxlibは適宜読み替えて下さい。
もし、ここでソースコードが赤文字まみれになった場合は、CLionのメニューからView -> CMakeを選択し、出てきたビューの更新ボタン(青色の円になった矢印)をクリックしてプロジェクトの更新を行って下さい。 ソースコードの赤文字が解消されてエラーが消えたら、CLionメニューのRun -> Run...を実行します。どのプロジェクトを実行するか聞かれた場合は、Allではなく、このプロジェクトを選択しましょう。これでコンパイルとリンクが成功し、ウインドウが表示されれば成功です!

f:id:nekko1119:20150416004741p:plain