はじめに
前回の記事からの続きになります。
今回はCMakeLists.txtを使ってlibraryファイルのリンクをしたいと思います。
参考サイト
-
かみのメモ
- 1番読んだサイト
- CMakeの使い方
- 実践C++ 応用講座CMake編
目次
まずはビルド
ファイルの準備
今回のディレクトリ構成は以下になります。
├── CMakeLists.txt
├── lib
│ ├── lib.cpp
│ └── lib.h
└── sampleApp.cpp
sampleApp.cppの他にlib.cpp, lib.hを用意しました。
lib.cpp, lib.hはlibフォルダに置いておきます。
今回のCMakeLists.txtの内容はこちらです。
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(sampleApp CXX)
set(LIBRARY_NAME lib/lib.cpp)
add_library(library STATIC ${LIBRARY_NAME})
add_executable(sampleApp sampleApp.cpp)
target_link_libraries(sampleApp library)
target_include_directories(library INTERFACE ./lib)
各実装は以下になります。(ここをクリック)
sampleApp.cpp
#include <iostream>
#include "lib.h"
int main(void)
{
std::cout << "Hello,World" << std::endl;
Library lib;
std::cout << lib.lib_string() << std::endl;
}
lib.h
#pragma once
#include <iostream>
#include <string>
class Library {
public:
std::string lib_string();
};
lib.cpp
#include "lib.h"
std::string Library::lib_string()
{
return "library : Hello, World";
}
ビルド
今回はmkdirでbuildディレクトリを作らずにcmakeで作成する。
cmake -Bbuild -H.
cmake --build build
これでbuildディレクトリにsampleAppが作られます。
ファイル実行
$ ./sampleApp
Hello,World
library : Hello, World
sampleApp.cppとlib.cppの文字が出力されます。
記述内容の説明
CMakeLists.txtに記述した内容について説明していきます。
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(sampleApp CXX)
set(LIBRARY_NAME lib/lib.cpp)
add_library(library STATIC ${LIBRARY_NAME})
add_executable(sampleApp sampleApp.cpp)
target_link_libraries(sampleApp library)
target_include_directories(library INTERFACE ./lib)
今回は4行目から10行目までを解説します。
- 4行目:set(LIBRARY_NAME lib/lib.cpp)
-
lib/lib.cpp
の値をLIBRARY_NAME
に代入している。 - 本来は複数の値を代入するが、今回は1つだけ。
-
- 5行目:add_library(library STATIC ${LIBRARY_NAME})
- ライブラリファイルをビルドする。
-
library
のライブラリファイル名を生成する。 -
STATIC
静的ファイルを生成する。 -
${LIBRARY_NAME}
setで代入した値を指定してライブラリファイルにする。
- 7行目:add_executable(sampleApp sampleApp.cpp)
- 実行ファイルを生成する。
- 9行目:target_link_libraries(sampleApp library)
-
sampleApp
実行ファイルにlibrary
ライブラリファイルをリンクする。
-
- 10行目:target_include_directories(library INTERFACE ./lib)
-
./lib
ヘッダーファイルをlibrary
にリンクさせる。
-
さいごに
以上で終了です。
ご参考になれば幸いです。
関連記事
- 【初心者向け】CMakeLists.txtを使ってビルドする。
- 【初心者向け】CMakeLists.txtを使ってincludeのpathを省略する。
- 【初心者向け】CMakeLists.txtを使ってlibraryをリンクする。