1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初心者向け】CMakeLists.txtを使ってlibraryをリンクする。

Last updated at Posted at 2023-06-13

はじめに

前回の記事からの続きになります。
今回はCMakeLists.txtを使ってlibraryファイルのリンクをしたいと思います。

参考サイト

目次

まずはビルド

ファイルの準備

今回のディレクトリ構成は以下になります。

├── 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 にリンクさせる。

さいごに

以上で終了です。
ご参考になれば幸いです。

関連記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?