2017-01-04 12 views
-1

です。問題の核心は、LinuxとWindowsの両方で自分のMakefileを使いたいということです。 共通CFILES := $(shell find $(SDIR) -name '*.cpp')を使用して.cppのファイルを検索すると、Windowsのシェルエスケープは、MSYS64/binがPATH内のプログラムを探す最初のディレクトリであり、Windowsの組み込みfindコマンドを使用するという事実を無視して、それはunix findプログラムとはまったく異なるものです。すべての* .cppファイルと* .hファイルが見つかりませんでした。Windowsの

だから私は

a)の窓の下でメイクシェルエスケープが実際に)それは私のPATHに発見された

または

Bを見つける「unixary」を使用しないという方法を見つけるためにいずれかの必要がありますシェルエスケープなしですべてのファイルを見つける方法を見つけてください。

+0

は'でCFILEを試してみてください確認してください。しかし、これはサブディレクトリに繰り返されることはありません。 –

+0

悲しいことに、それはプロジェクトが管理可能でないために必要なものです – salbeira

+0

現在のディレクトリまたはパス上の別のディレクトリにファイルを追加できますか?前者が 'MSYS64 \ bin \ find.exe'を呼び出し、後者が' find'を呼び出す場合は、 'myfind.bat'と' myfind'を使用できます。 –

答えて

0

ディレクトリも必要であれば、notdir関数をフォローして削除してください。

YOUR_DIRECTORY = \ FILESを探すに\ \あなたの\ディレクトリ\

YOUR_DIRECTORY_FILES = $

に($(シェルDIR/AD/B/Sの$(YOUR_DIRECTORY)*。CPP)notdir) = $(。ワイルドカード$(SDIR)/ * CPP) `:

$ {情報ファイル$(YOUR_DIRECTORY_FILES)}

+0

これは有望ですが、何らかの理由でdirへの引数がディレクトリとして解釈されて端末にコマンドを入力したときに正しい結果が得られる – salbeira

+0

それが指しているシェルがsh.exe(use $ {info $(SHELL) )、そうでなければ、path変数に現在のシェルのディレクトリを移動し(出力として取得する)、コマンドプロンプトを再起動します。 これは最近私のために働いたとしてテストされています –

関連する問題