chatGPTに協力してもらいながら、作ったら意外と簡単。
cmake_minimum_required(VERSION 3.10)
# プロジェクト名を変数として定義
set(PROJECT_NAME MyOpenCV_Eigen_OpenGL_Project)
project(${PROJECT_NAME})
# C++17を使用する
set(CMAKE_CXX_STANDARD 17)
# OpenCVのパッケージを見つける
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# Eigenのパッケージを見つける
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
include_directories(${EIGEN3_INCLUDE_DIR})
# OpenGLのパッケージを見つける
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
# GLFWのパッケージを見つける
find_package(glfw3 REQUIRED)
include_directories(${GLFW_INCLUDE_DIRS})
# ImGuiのソースコードを追加
set(IMGUI_DIR "${CMAKE_SOURCE_DIR}/external/imgui")
file(GLOB_RECURSE IMGUI_SOURCES "${IMGUI_DIR}/*.cpp")
file(GLOB_RECURSE IMGUI_HEADERS "${IMGUI_DIR}/*.h")
# ソースファイルを自動的に追加する
file(GLOB_RECURSE SOURCES "src/*.cpp")
file(GLOB_RECURSE HEADERS "src/*.h")
# ヘッダーファイルのインクルードパスを追加
include_directories(${IMGUI_DIR})
# 実行可能ファイルを作成
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS}
${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp
${IMGUI_DIR}/imgui_widgets.cpp ${IMGUI_DIR}/imgui_tables.cpp
${IMGUI_DIR}/backends/imgui_impl_glfw.cpp
${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp)
# ImGuiのソースコードとヘッダーファイルをグループ化
source_group(TREE "${IMGUI_DIR}" PREFIX "imgui" FILES ${IMGUI_SOURCES})
source_group(TREE "${IMGUI_DIR}" PREFIX "imgui" FILES ${IMGUI_HEADERS})
# ソースコードとヘッダーファイルをグループ化
source_group(TREE "${CMAKE_SOURCE_DIR}/src" PREFIX "src" FILES ${SOURCES})
source_group(TREE "${CMAKE_SOURCE_DIR}/src" PREFIX "src" FILES ${HEADERS})
# リンカオプションを設定
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
${OPENGL_LIBRARIES}
glfw
)
# デバッグビルドのために、コンパイラオプションを追加する場合
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")