0
0

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 3 years have passed since last update.

Google OR-ToolsのVisual Studio 2019 Community版で始める

Last updated at Posted at 2020-01-20

C++サンプルプログラムをVisualStudio2019の新規プロジェクトで始める手順

前回、Google OR-ToolsをVisual Studio 2019でソースコードからビルドしました。今回はその成果物であるortools.libを利用する手順を簡単にまとめます。

既に、OR-ToolsはPCにインストール済みであることを前提としています。

新規プロジェクト作成手順にフォーカスするため、サンプルコードは、本家のサンプルを写経します。
これをprogram1.cppとして任意の場所に保存します。今回は、C:/orsample の下に置いたとします。

cd C:/orsample
 └── program1.cpp

CMakeLists.txtを準備する

Visual Studio 2019のプロジェクトを作成するため、CMakeの find_package() を利用すると簡単です。
プロジェクト名を prog として以下の様な記述としました。CMakeLists.txtの細かい記述方法についてはここでは割愛します。

cmake_minimum_required(VERSION 3.8.2)
project(prog VERSION 1.0.0 LANGUAGES CXX)

include(CTest)
find_package(ortools CONFIG REQUIRED)

add_executable(${PROJECT_NAME} program1.cpp)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
target_link_libraries(${PROJECT_NAME} PRIVATE ortools::ortools)

ここまでで以下の様な構成です。

cd C:/orsample
 ├── CMakeLists.txt
 └── program1.cpp

プロジェクトファイルの生成

上記の作成したCMakeLists.txtを利用してVisualStudio2019のソリューションファイルを生成します。以下の手順です。開発用ですのでデバッグタイプの構成で生成させます。

mkdir build
cd build
cmake  -DCMAKE_BUILD_TYPE=Debug ..

私の環境では、上記コマンドで以下の様なメッセージがでました。これはgflags::gflags_staticが正しく設定できなかったようです。

CMake Error at CMakeLists.txt:7 (add_executable):
  Target "prog" links to target "gflags::gflags_static" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?

デバックタイプのプロジェクト生成なので、gflags_static_debug.libのハズなので、先に進めて手動で手直しすることにします。

slnファイルのビルド

上記の生成後、以下の様な構成です。

cd C:/orsample
 ├── CMakeLists.txt
 ├── program1.cpp
 └── build/
     ├─  ALL_BUILD.vcxproj.user
     ├─ ...
     ├─ prog.sln
     ├─ ...
     └── CMakeCache.txt

ここで、 prog.sln をVisual Studio 2019 で開きます。その後、CMakeでリンク設定できていない箇所を手動で修正します。ソリューションエクスプローラーから progプロパティリンカー入力 を開き、 [追加の依存ファイル] を編集し gflags::gflags_static を削除して、以下のlibをリンクするように設定します。他の設定は生成したプロジェクトのままでビルドできました。C:\tools\or-tools\build\dependencies\install\lib\部分については、私のor-toolsをビルドしたパスに依存しています。各自環境に読み替えてください。

C:\tools\or-tools\build\dependencies\install\lib\gflags_static_debug.lib
shlwapi.lib

テスト実行

VisualStudio2019の [デバッグ][デバッグの開始] メニューからデバッグ実行もできました。コンソールに Objective value = 4やx=1,y=1の実行結果も表示されました。もちろんブレークポイントも正しく止まります。:frowning2:

program1_output.PNG

おわりに

正しい手順かどうかは不明ですが、自分の環境でGoogle OR-Toolsを利用した新規プロジェクトの簡単な作成手順が確認できました。手修正が1ステップ残りましたが、おいおい、対応していくことにします。

参照元

次回

次回はいよいよ制約プログラミングの第一歩に入りたいと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?