Microsoft Visual StudioとGCCの両方を使用してWindowsシステムでコンパイルしたいプロジェクトがあります。使用するコンパイラ(たとえば、COMPILER = VSまたはCOMPILER = GCC)を選択するための環境変数があります。最初の問題は、GCCの "includeオプション"が-Iで、Visual Studioのインクルードオプションが/ Iであるということです。Windowsには、変数をインクルードする変数を含むmakefileのパスが含まれています
COMPILER_INCLUDE_PATH = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"
UCRT_INCLUDE_PATH = "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"
UM_INCLUDE_PATH = "C:\Program Files (x86)\Windows Kits\8.1\Include\um"
WINFAMILY_INCLUDE_PATH = "C:\Program Files (x86)\Windows Kits\8.1\Include\shared"
INCLUDE_LIST = $(COMPILER_INCLUDE_PATH) $(UCRT_INCLUDE_PATH) $(UM_INCLUDE_PATH) $(WINFAMILY_INCLUDE_PATH)
はだから今INCLUDE_LISTがある:私は含める必要があるパスのリストを構築今
ifeq ($(COMPILER), VS)
INCLUDE_DELIMITER = /I
else
INCLUDE_DELIMITER = -I
endif
:
は、私はそれゆえ含める必要なオプションフラグを指定する変数を持っています引用符で囲まれた文字列のリスト(ウィンドウパスのスペースのため)これらの文字列のそれぞれにINCLUDE_DELIMITER(コンパイラ固有)を付加する変数を作成するにはどうすればよいですか?
私が試してみた:
INCLUDES = $(patsubst, "%", $(INCLUDE_DELIMITER)"%", $(INCLUDE_LIST))
なしavialに。私も試みました:
INCLUDES = $(foreach d, $(INCLUDE_LIST), $(INCLUDE_DELIMITER)$d)
しかし、INCLUDE_LISTの各スペースが新しい単語として検出されました。
あなたはcmakeの使用を検討しましたか? – wally