スポンサーリンク

CMakeLists.txtの書き方(VC++想定)

基本

まずは基本。以下で、MySolutionというソリューションを作成できる。””で囲まないことに注意。

project(MySolution CXX)

しかし、setで変数を定義して、${}で変数指定する方が一般的らしい。

例として、以下のディレクトリ構造でCMakeLists.txtを書いてみる。

D:.
│
└─src
        CMakeLists.txt
        function.cpp
        main.cpp
        source.hpp
# CMakeのバージョンを設定 今自分が使っているものを指定している
# 必須要件なので、数字は小さい方がいい。
cmake_minimum_required(VERSION 3.25)

#############################################
#############################################

# ソリューション名を設定
set(MY_SOLUTION_NAME "MySolution")

#プロジェクト名を設定
set(MY_PROJECT_NAME "MyProject")

# 出力ファイル名を設定
set(MY_OUTPUT_NAME "myout")

#############################################
#############################################

# ソリューションを作成
# プロジェクト名と使用する言語を設定
project(${MY_SOLUTION_NAME} CXX)

#############################################
#############################################

# main.cpp function.cppからプロジェクト作成
add_executable(${MY_PROJECT_NAME} main.cpp function.cpp)


#############################################
#############################################
# 出力名を"myout.exe"に設定 set_target_properties(${MY_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${MY_OUTPUT_NAME})

そのほか、必要な設定の追加

includeディレクトリ、ライブラリディレクトリ、ライブラリファイルを追加する。add_executableとの順番が重要になる。

# CMakeのバージョンを設定 今自分が使っているものを指定している
# 必須要件なので、数字は小さい方がいい。
cmake_minimum_required(VERSION 3.25)

#############################################
#############################################

# ソリューション名を設定
set(MY_SOLUTION_NAME "MySolution")

#プロジェクト名を設定
set(MY_PROJECT_NAME "MyProject")

# 出力ファイル名を設定
set(MY_OUTPUT_NAME "myout")

#############################################
#############################################

# ソリューションを作成
# プロジェクト名と使用する言語を設定
project(${MY_SOLUTION_NAME} CXX)

#############################################
#############################################

# ライブラリディレクトリ追加
# 注:add_executableの前でなければならない
link_directories(path/to/library/directory)


# プロジェクトを作成
# out.exeという実行ファイルをmain.cppから作成
add_executable(${MY_PROJECT_NAME} main.cpp function.cpp)


# includeディレクトリ追加
# 注:add_executableの後でなければいけない
target_include_directories(${MY_PROJECT_NAME} PRIVATE path/to/include/directory)

# ライブラリ追加
target_link_libraries(${MY_PROJECT_NAME} mylib1.lib mylib2.lib)


#############################################
#############################################

set_target_properties(${MY_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${MY_OUTPUT_NAME})

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: