2017-08-26 10 views
-2

私はGCC for CとG ++ for C++を使用します。私は各cmdlineオプションをどこにでも供給するのに苦労しています。GCCに渡されるすべてのcmdline引数の代わりにハッシュ行を使用できますか?

は、私は簡単に

#define HAVE_CONFIG_H 

-DHAVE_CONFIG_Hを置き換えることができると言う#ラインによって交換可能なすべてのコマンドラインパラメータの引数はありますか?そうでない場合は、で置き換え可能ですか?

私は少なくとも-O2-std=xxx-L-Iを好む。

編集:私はオンライン判定手段に自分のコードをアップロードするとき、それは常にはっきり(gcc xxx.c -o xxx -lm)、それをコンパイルしてしまうため、この問題を抱えていると私のための任意の最適化フラグをオンにしないだろう。私は自分のコマンドラインを変更することができないので、私はソースコードでそれをしたい。

+1

**あなたの質問を編集して**動機づけます(いくつかの段落を追加することによって)。なぜ適切なコンパイラオプションを渡すことができないのですか(例えば 'Makefile'を介して)?これは驚くようですが、いくつかの[XY問題](http://xyproblem.info/)のように多くのにおいがします。 –

答えて

0

どこでも各コマンドラインオプションを指定できません。

なぜですか? GNU makeのようなツールbuild automationを使用していますか?私は

は#ラ​​インによって交換可能なすべてのコマンドラインパラメータの引数はありますか?(おそらく、このようなCXXFLAGS += -DHAVE_CONFIG_H -O2 -std=c++11のような行を追加するようなもの)あなたのMakefileにいくつかの適切な行を追加するだけです、あなたがそれを使用する必要があります信じていますかもしそうでなければ、どの引数が置き換え可能であるか?

プリプロセッサーディレクティブで置き換えることができます。 Read documentation of cpp

実際、ほとんどのコンパイラオプションはではなく、のプリプロセッサディレクティブで置き換えられます。ため、特に

  • -std=

  • -L-lリンカーの他のオプション

  • -Iと同様のオプションは、しかし、ディレクトリ

、含ま他の最適化フラグはfunction attributesによって設定可能である。例えば、__attribute__((optimize("O2"))this参照)およびfunction specific option pragmas(例えば、 #pragma GCC optimize "-O2"。これはGCCに固有のものです。

documentation of GCCを読むのに数時間を費やすことをおすすめします。

おそらくspec fileを変更することもできますが、そうしないことをおすすめします。

関連する問題