s-nakaoka / choreonoid

An integrated graphical robotics application framework
http://choreonoid.org
Other
94 stars 58 forks source link

Add std-c++11 cflags to pkg-config files #205

Closed epsilonkei closed 6 years ago

epsilonkei commented 6 years ago

はじめまして、JSKのM1のグエンキムゴックカンと申します。

ロボットのControllerを作成しています。 choreonoidの外部プラグインと同様にHeaderファイルを参照してchoreonoid本体と別にビルドしているのですが、 以下のようなエラーが出ます。

/usr/local/choreonoid/include/choreonoid-1.7/cnoid/src/Body/BodyCustomizerInterface.h: In constructor ‘cnoid::BodyCustomizerInterface::BodyCustomizerInterface()’:
/usr/local/choreonoid/include/choreonoid-1.7/cnoid/src/Body/BodyCustomizerInterface.h:67:29: error: ‘nullptr’ was not declared in this scope
         getTargetModelNames(nullptr),

最近、choreonoid-1.7にアップデートしておりまして、std=c++11を設定すると、このエラーが解消されます。 pkg-configファイルにcflagsの情報を追加するのが正しいでしょうか。

環境はUbuntu 14.04 です

s-nakaoka commented 6 years ago

ご提案ありがとうございます。 ちゃんと把握していないのですが、std=c++11というのは、各コンパイラで共通の書き方なのかが気になります。(例えばgccではこれでよいけどclangではちょっと違うとか。恐らく同じかと思いますが。) また、C++の企画はC++11以降もC++14、C++17とより上位のバージョンも出ており、それらはC++11の上位互換のはずで、そちらを使いたいという時もあるかと思います。 そのようなときに、あるライブラリのためのオプションでC++のバージョンまで決めてしまうようだと、問題にならないか気になりました。 C++のバージョンについては、プログラム本体のコンパイル設定で設定してもらって、ライブラリ用のオプションはインクルードパスとかリンクパスとかリンクするライブラリ等にとどめておくほうがよいような気もします。

epsilonkei commented 6 years ago

ご回答ありがとうございます。 わかりました。 では、こちらの方にコンパイル設定修正して、対応します。