メモ

MySQLの比較的最新なバージョンでは、ソースからWindows上でビルドする場合、Visual C++とともにCMakeを使います。(以前はVisual C++だけでもOKでした。)この仕組みが導入されたことにより、Linuxのconfigureに似たビルドオプション設定が可能になっています(まだ設定できる項目は限られますが)。

しかしながらソースとかビルド手順をいじろうと思った場合(Tritonnなど)、従来であればVisual C++の設定ファイルを読み書きできればその知識だけで事足りたのですが、現在はCMake用のファイルをいじる必要があるため、CMakeについても学ばなければなりません。

というわけでいくつか自分用メモ。CMakeのリファレンスマニュアル自身はこちらです。http://www.cmake.org/HTML/Documentation.html

  • PROJECT: プロジェクト名を設定する
  PROJECT(projectname [CXX] [C] [Java])
  ADD_DEFINITIONS(-DFOO -DBAR ...)
  • ADD_SUBDIRECTORY: サブディレクトリをビルド対象に追加する
  ADD_SUBDIRECTORY(source_dir [binary_dir] 
                   [EXCLUDE_FROM_ALL])
  • INCLUDE: 任意のCMake設定ファイル(CMakeList.txt等)を読み込む
  INCLUDE(file1 [OPTIONAL])
  INCLUDE(module [OPTIONAL])
  • SET: CMake用変数の値を設定する
  SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
  • INCLUDE_DIRECTORIES: ビルドで使用するincludeディレクトリを追加する
  INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
  • ADD_LIBRARY: 指定したソースを使用してライブラリをビルドするターゲットを追加
  ADD_LIBRARY(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL]
              source1 source2 ... sourceN)

デフォルトはSTATIC

  • ADD_EXECUTABLE: 指定したソースを使用して実行可能バイナリをビルドするターゲットを追加
  ADD_EXECUTABLE(exename [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL]
                 source1 source2 ... sourceN)
  • TARGET_LINK_LIBRARIES: ターゲットにリンクさせるライブラリを指定する
  TARGET_LINK_LIBRARIES(target library1
                        <debug | optimized> library2
                        ...)

ADD_LIBRARYに対してTARGET_LINK_LIBRARIESが効いていないように見えるのは気のせい?

  • LINK_DIRECTORIES: リンクさせるライブラリの探索パスを追加する
  LINK_DIRECTORIES(directory1 directory2 ...)