質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

6回答

4468閲覧

インクルードオプションを毎回指定しない方法

erdes

総合スコア35

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/07/28 14:11

前回、C言語版のOpenCVをコンパイルする方法について質問させていただきました。
無事コンパイルができました。
結局そのときは、CPATHに設定し、さらにインクルードオプションを指定してコンパイルしました。
その後いろいろ試してみましたが、インクルードオプションを指定せずコンパイルすると、コンパイルできませんでした。
オプションで指定する文字列が長いので、毎回指定せずにあらかじめどこかに設定しておくことはできないのでしょうか。
参考までにコンパイルしようとしたコードとCPATHとコンパイルするときに実行したコマンドを載せておきます。

C++

1#include<iostream> 2#include<opencv2/opencv.hpp> 3 4int main(){ 5 cout<<"hello"<<endl; 6 return 0 ; 7}

bash

1hiroshi-no-MacBook-Air:Pro-tr hiroshi$ echo $CPATH 2/usr/local/Cellar/opencv/2.4.12/include

bash

1 C++ opencv.cpp -I /usr/local/Cellar/opencv/2.4.12/include

また
/usr/local/Cellar/opencv/2.4.12/include/opencv2/core にあるeigen.hppをインクルードしたいのですが、同様の手順でCPATHやインクルードオプションを指定するのかと思ってやってみたのですができませんでした。

環境変数とはいってもいろいろあるようなので、CPLUS_INCLUDE_PATHとか関係してくるのかと思いましたが、どうなんでしょうか。
参考にしたところ→http://www2.kobe-u.ac.jp/~lerl2/l_cc_p_10.1.008/doc/main_cls/mergedProjects/bldaps_cls/common/bldaps_env_vars1_comm.htm

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

  • コンパイル用のシェルを作る
  • makefileを作る
  • いっそのことフルパスでインクルードする

投稿2016/07/29 00:49

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

みなさまありがとうございます。
すべてのキーワードをまだ完全にフォローできているわけではありませんが、とりあえずとっかかりがつかめそうです!
コンパイルをすると一言でいっても、そのためにまた色々なツールがあるんだなということがわかりました!

投稿2016/07/30 14:40

erdes

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

OpenCVでも使われているCMakeをお勧めします。

投稿2016/07/29 14:51

satoren

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

毎回コマンドラインでコンパイルしているのでしょうか。
IDEを使えばインクルードパスやライブラリー検索パス、コンパイルオプションなど諸々設定できるので、そういう煩わしさから解放されます。

投稿2016/07/29 03:53

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

makefile を書くというのはどうでしょうか?

投稿2016/07/28 18:51

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは。

まず、見ている説明はインテルのC++コンパイラ用のものです。
erdesさんの別の質問に、確かお使いのコンパイラはclang/llvmっぽいメッセージが出ていたと思います。

ここを見るとCPATH等でインクルード・パス設定するというclang 4.0らしき説明があるのですが、clangの最新版は3.8.1ですので、なんの説明なのか良く分かりません。
ちょっと古い情報ですが、ここを見ると「clangはincludeのパスを環境変数とかで無しに直書きで全部済ましてるそうなので」と記載されてます。
erdesさんのところでCPATHが使えなかった点から、clangは環境変数によるインクルード・パス指定をサポートしていないかもしれません。

bashスクリプトを作って、-I /usr/local/Cellar/opencv/2.4.12/includeを与えれば楽できると思います。
下記が参考になります。
bash シェルスクリプト入門 -シェルスクリプトのいろは-
引数を処理する

投稿2016/07/28 14:46

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問