質問

作業中の更新されたビルドシステムを試しています。現在、コンパイラ&を設定する良い方法を見つけようとしています。ターゲットプラットフォームに応じたフラグ。

やりたいことは次のようなものです

switch $(PLATFORM)_$(BUILD_TYPE)
  case "Linux_x86_release"
     CFLAGS = -O3
  case "Linux_x86_debug"
     CFLAGS = -O0 -g
  case "ARM_release"
     CC = armcc
     AR = armlink
     CFLAGS = -O2 -fx
     ...

GNU Makeではサポートされていません。さて、私の最初の考えはただやることでした

-include $(PLATFORM)_$(BUILD_TYPE)

これはかなりまともな解決策ですが、ファイル間の違いの概要を把握するのが難しくなります。もちろん、&それぞれが一連の変数定義を含む、良好な60-80ファイルを維持します。

これを達成するより良い方法を知っている人はいますか?つまり別の変数に基づいてフラグと他のオプションのセットを設定しますか?

役に立ちましたか?

解決

あなたのためにそれを行うシステム(automake / autoconf)への切り替えはより簡単かもしれません...

他のヒント

方法:

CFLAGS_Linux_x86_release        = -O3
CFLAGS_Linux_x86_debug          = -O0 -g


CFLAGS  = ${CFLAGS_${PLATFORM}_${BUILD}}

このようなパラメーターの構成は、 configure スクリプトのタスクになります。

それで、 conditionals a>および条件付き関数。たとえば、次を試すことができます。

ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_release)
    CFLAGS = -O3
endif
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_debug)
    CFLAGS = -O0 -g
endif

Makefile が使用された git は、Makefile自体で重要な設定タスクを実行するMakefileの良い例です(例:ホストタイプの切り替え)。実際には非常に読みやすく、使用するのはかなり簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top