質問: C++で開発をしています。QtCreator(4.7.0)でgraphviz(2.38.0)を使おうとしています。 以前、C言語でIDEを使わずプログラムを書いていた時にgraphvizを使っていたのですが、その時はgraphvizが入っていた別のパソコンにリモートログインし、以下のコマンドでコンパイルできていました。(オプションの意味はあまり分かっていません) ``` gcc -I/usr/include/graphviz -L/usr/lib64/graphviz -lgvc -lgraph -lcdt ...(ファイル名) ``` 今回はそのパソコンにリモートログインせずに実行したいので、ローカルにgraphvizファイルを置いて実行しようとしているのですが、表題のようにインクルードができません。 試してみたことは以下の通りです。 * 「C:\msys64\mingw64\include」にgraphvizフォルダ(ヘッダファイルたちが入っている)を置く * ソースファイルたちと同じ階層、あるいは実行ファイルと同じ階層(「(ソースファイルたちのあるフォルダ)\debug」)にgraphvizのbinフォルダのみを置く * ユーザ環境変数の編集から上記の階層、あるいは「C:\msys64\usr\local\Graphviz2.38\bin」でPathを設定 * QtCreatorのプロジェクト->ビルドステップの引数の欄にで上記のgccの時に使っていたオプションを追加(オプションが認識されませんでした) * QtCreatorのプロジェクト->ビルド時の環境変数の「Path」の値に「(実行ファイルのあるフォルダ)\bin」を追加 などを試しましたが、見つからないというエラーがずっと出ます。 現行のgraphvizは関数の引数などが複雑になっているようなので、新しくダウンロードはしていないです。 使っているPCはスーパーユーザでないアカウントでログインしています。(管理者権限のパスワードは分かっています) 以前全く同じ環境・バージョンでgraphvizを動かしていた方がいるので、できないことはないと思っています。(上記の二つ目の項目の、実行ファイルと同じ階層にbinフォルダを置くというのはその方からの引継ぎ資料にありました) 当方あまり詳しいことはわからないですが、どなたか解決方法がお分かりになる方がいらっしゃいましたら、ご教授いただきたいです。 【追記】 コメントありがとうございます。 C:\msys64\mingw64\include\graphvizには確かにgvc.hファイルやその他のヘッダファイルがあります。 その他、Graphviz2.38というフォルダをソースコードと同じ階層に置いたり、その下(\include\graphviz)のgraphvizフォルダをその階層に置いたりしてみましたが、上手くいきません。 【追記2】 proファイルにINCLUDEPATHを追加することで、エラーが消えました。ありがとうございます。 「リンクついては...」以降の意味があまり分からなかったのですが、同じようにproファイルにLIBS+=(パス)と入力すれば良いのでしょうか? 使用環境については、以前リモートログインしていた環境が以下の通りです。(とりあえずそのまま載せます) CentOS リリース 4.10(Final) カーネル Linux 2.6.32-754.27.1.el6.x86_64 GNOME 2.28.2 また、現在使用している環境はWindows 8.1 Enterpriseです。 【追記3】 無事グラフ画像の出力が行えました。本当にありがとうございました。
回答: プロジェクトファイル(`*.pro`)に、変数「`INCLUDEPATH`」にインクルードファイルの場所を記述すると解決すると思います。 リファレンス: INCLUDEPATH `C:\msys64\mingw64\include\graphviz`にヘッダファイルがあるのであれば、次の内容を追加すればよいと思います。 ``` INCLUDEPATH += C:/msys64/mingw64/include/graphviz ``` #プロジェクトファイルを編集した場合、「qmakeの実行」を忘れないでください。 なお、リンクについては、ライブラリパスは同様に、変数「`LIBS`」に記述すればよいと思います。 (実行時にはDLLの場所をPATHに追加します) 追記2に対する補足 リンクに関する記述は、「`undefined reference`」等のリンクエラーが発生する場合の対処として記載しました。リンクエラーが出ていないのであればプロジェクトファイルへの記述は不要です。(必要な場合はプロジェクトファイルへ記述する)