まずは基本。以下で、MySolutionというソリューションを作成できる。””で囲まないことに注意。
しかし、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})