Help us understand the problem. What is going on with this article?

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

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ステップ残りましたが、おいおい、対応していくことにします。

参照元

次回

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした