3

コマンドラインから make に追加の変数を渡すリンク を確認しました。

makefile を使用して Linux と Windows の両方でコンパイルするプロジェクトがあります。Windows では gcc を使用し、Linux では ARM バージョンのgccie を使用しarmv7-linux-gccます。Windows または Linux に応じて使用するコンパイラを makefile に指示するコマンド ライン変数を使用したいと考えています。

たとえば、Windows では次のようになります。

CC= gcc  
CFLAGS= -c -D COMPILE_FOR_WINDOWS

Linux の場合:

CC =  armv7-linux-gcc  
CFLAGS = -c -D COMPILE_FOR_LINUX

これらのプリプロセッサ定義 COMPILE_FOR_WINDOWS と COMPILE_FOR_LINUX はコード ベースに存在し、変更できません。

また、make clean の場合、Windows と Linux の両方でクリーンアップする必要があります。これをビルドする人がCygwinをインストールしているとは思えないのでrm、ファイルの削除には使用できません。

4

2 に答える 2

1

この回答は、GNU make などを使用している場合にのみ有効です。

環境変数を使用して、make 変数を条件付きで設定します。

「クリーン」ルールを適切に機能させるには、いずれかの OS のファイル拡張子の違いに対応する make 変数を作成する必要がある場合もあります。

単純な例:

ifeq ($(OS), Windows_NT)
  CC=gcc
  RM=del
  EXE=.exe
  CFLAGS=-c -DCOMPILE_FOR_WINDOWS
else
  CC=armv7-linux-gcc
  RM=rm  
  EXE=
  CFLAGS=-c -DCOMPILE_FOR_LINUX
endif

PROG=thing$(EXE)

.PHONY: all
all: $(PROG)
        $(CC) $(CFLAGS) -o $(PROG) main.c

.PHONY: clean
clean:
        -$(RM) $(PROG) *.o
于 2013-10-15T06:05:49.137 に答える
0

antを (build.xml ファイルと共に) 使用してプロジェクトをビルドすることもできます。それ以外の場合は、Makefile でシステムをチェックし、プロジェクトを Unix 環境で作成しているか Windows 環境で作成しているかを確認するための条件をいくつか設定する必要があります。

于 2012-07-29T17:21:00.423 に答える