AWS SDK for C++ を利用してみようとおもったらCMakeなるものを利用していたので、先にそちらについて調べてみました。(C++ 初心者)
aws/aws-sdk-cpp: AWS SDK for C++
https://github.com/aws/aws-sdk-cpp
CMakeとは
CMake – Wikipedia
https://ja.wikipedia.org/wiki/CMake
CMakeはコンパイラに依存しないビルド自動化のためのフリーソフトウェアであり、様々なオペレーティングシステムで動作させることができる。CMakeは階層化ディレクトリや複数のライブラリを利用するアプリケーションをサポートするよう設計されている。実際のビルドにおいては、make、Xcode、Visual Studioのようなネイティブのビルド環境が利用される。CMake自身は最小限の依存関係を持つよう設計されており、ビルドするにはC++コンパイラのみを必要とする[4]。
g++
コマンドでコンパイルするよりも超便利って認識で良いのかな。
検証環境
MacBook Proでgcc
などはそのままな環境です。
> sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G4015 > gcc -v Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 10.0.0 (clang-1000.10.44.4) Target: x86_64-apple-darwin17.7.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
CMakeをMacにインストール
CMakeをMacにインストールするには、Homebrewが利用できるようです。
Monobit Unity Networking (MUN) official document
http://www.monobitengine.com/doc/mun/contents/SetupServer_MacOSX/Cpp/Install_CMake.htm
> brew install cmake
(略)
==> Summary
? /usr/local/Cellar/cmake/3.13.3: 5,543 files, 50.8MB
インストールできたらコマンドを叩いてみます。
> cmake Usage cmake [options] <path-to-source> cmake [options] <path-to-existing-build> cmake [options] -S <path-to-source> -B <path-to-build> Specify a source directory to (re-)generate a build system for it in the current working directory. Specify an existing build directory to re-generate its build system. Run 'cmake --help' for more information.
CMakeを利用してみる
下記を参考に利用させてもらいました。
複数ソースファイルがある方がCMakeの便利さがわかるっぽいのですが、まだ*.hpp
ファイルなにそれ?おいしいの?な初心者なので、単一ファイルです!
ごく簡単なcmakeの使い方 – Qiita
https://qiita.com/termoshtt/items/539541c180dfc40a1189
> mkdir 任意のディレクトリ > cd 任意のディレクトリ > touch main.cpp > touch CMakeLists.txt
main.cpp
#include <iostream> int main() { std::cout << "Hello! World!" << std::endl; return 0; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) add_executable(Main main.cpp)
必要なファイルが用意できたら、CMakeでコンパイルしてみます。
> cmake . -- The C compiler identification is AppleClang 10.0.0.10001044 -- The CXX compiler identification is AppleClang 10.0.0.10001044 -- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /任意のディレクトリ
なにやらいろんなファイルが生成されました。
> ls -l total 72 -rw-r--r-- 1 hoge Users 13295 1 22 13:00 CMakeCache.txt drwxr-xr-x 15 hoge Users 480 1 22 13:00 CMakeFiles -rw-r--r-- 1 hoge Users 65 1 22 12:15 CMakeLists.txt -rw-r--r-- 1 hoge Users 4820 1 22 13:00 Makefile -rw-r--r-- 1 hoge Users 1377 1 22 13:00 cmake_install.cmake -rw-r--r-- 1 hoge Users 96 1 22 12:59 main.cpp
こちらの記事によると、CMakeを利用してコンパイルする場合には、専用のディレクトリ内で実行するのが良いとのことです。
CMakeの使い方(その1) – Qiita
https://qiita.com/shohirose/items/45fb49c6b429e8b204ac
なぜなのか気になって調べてみたら、下記が詳しかったです。
CMake : out-of-sourceビルドで幸せになる – Qiita
https://qiita.com/osamu0329/items/7de2b190df3cfb4ad0ca
ソースファイルと同じディレクトリ内で実行しちゃだめってわけではなさそうなので、今回はそのまますすめます。
CMake
コマンドで出力されるファイルについては、Makefile
が自動生成されてウマーくらいの認識でよさそう?ほんとに?
実行ファイルを作成するのに、make
コマンドを実行します。
> make Scanning dependencies of target Main [ 50%] Building CXX object CMakeFiles/Main.dir/main.cpp.o [100%] Linking CXX executable Main [100%] Built target Main
これでMain
ファイルが作成されました。
実行してみます。
> ./Main Hello! World!
おおー。実行できました。
まとめ
今回みたいなシンプルな構成だと、g++
コマンドだけでもよさそうですが、構成が複雑になってくるとCMake
を利用するのが良さそうです。
> g++ -o Main2 main.cpp > ./Main2 Hello! World!
参考
CMake – Wikipedia
https://ja.wikipedia.org/wiki/CMake
Monobit Unity Networking (MUN) official document
http://www.monobitengine.com/doc/mun/contents/SetupServer_MacOSX/Cpp/Install_CMake.htm
ごく簡単なcmakeの使い方 – Qiita
https://qiita.com/termoshtt/items/539541c180dfc40a1189
CMakeの使い方(その1) – Qiita
https://qiita.com/shohirose/items/45fb49c6b429e8b204ac
CMake : out-of-sourceビルドで幸せになる – Qiita
https://qiita.com/osamu0329/items/7de2b190df3cfb4ad0ca