Closed2

cmake簡単ハンズオン

かじるかじる

cmake簡単ハンズオン

cmakeでc++をお試しする簡単ハンズオンです

Step1: ファイルを用意

フォルダを作り、そこに2つのファイルを用意します

フォルダ構成
root/
├── CMakeLists.txt
└── main.cpp
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.14) # cmakeのバージョン
project("HelloCMake")                # プロジェクト名
add_executable(Main main.cpp)        # 実行ファイルを指定
main.cpp
#include <stdio.h>

int main(){
    printf("Hello, CMake!!\n");
    return 1;
}

Step2: ビルド先ディレクトリの作成

Generated Build Systemと、実行ファイルの生成先を用意します

command
$ mkdir build
$ cd build

Step3: cmakeコマンド

Generated Build Systemを生成します

command
$ cmake ../

Step4: build

実行ファイルを生成します

command
$ cmake --build ./

Step5: run

実行します

command
$ ./Main
かじるかじる

階層構造になったプロジェクト

プロジェクト内が階層構造にしたい場合は次の様に管理します

Step1: ファイルを用意

新たにmoduleディレクトリを作り次の様にファイルを用意します

フォルダ構成
root/
├── CMakeLists.txt
├── main.cpp
└── module/
   ├── CMakeLists.txt
   └── func1.cpp
   └── func1.cpp

Step2: moduleフォルダ

moduleフォルダ内部のファイルは次の様に記述します

modules/CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.14) # cmakeのバージョン
add_library(Module STATIC
    func1.cpp
    func2.cpp
)
module/func1.cpp
#include <stdio.h>
int calcDouble(int num){
    return num * 2;
}
module/func2.cpp
#include <stdio.h>
int calcTripple(int num){
    return num * 3;
}

Step3: ルートディレクトリ

ルートディレクトリのファイルは次の様に記述します

CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.14) # cmakeのバージョン
project("HelloCMake")                # プロジェクト名
add_subdirectory(module)             # サブディレクトリ指定
add_executable(Main main.cpp)        # 実行ファイルを指定
target_link_libraries(Main Module)   # Mainに対してModuleをリンク
main.cpp
#include <stdio.h>
#include "module/func1.cpp"
#include "module/func2.cpp"

int main(){
    printf("Hello, CMake!!\n");

    const int num1 = calcDouble(4);
    printf("Double: %d\n", num1);

    const int num2 = calcTripple(4);
    printf("Tripple: %d\n", num2);

    return 1;
}

以降の手順は前回の記事と同様です。

このスクラップは3日前にクローズされました