2013-02-27 44 views
0

我想在一個目錄中運行一個makefile,使得它運行皮棉在該目錄中的所有cpp文件並保存在多個文件的輸出與同名稱作爲源文件。 例如換句話說,我想省掉lint把abc.cpp放到abc.txt和def.cpp中去def.txt等等,把所有未知數的文件都放到lintfiles的子目錄下。 一些東西像下面這樣: -生成文件:皮棉多個源文件,並提出了相應txt文件

*lint .ALWAYS:* 
    --lint-nt $(PATHS) $(OPTIONS) *.cpp > ./lintfiles/%f.txt 

化妝UTIL不理解Lint的%f選項。我也嘗試了以下,但它不產生輸出。

lintfiles/%.txt: %.cpp 
    -lint-nt $(PATHS) $(OPTIONS) [email protected] $^ 

請建議。

+0

'foreach'和通配符應該做的招。 – HonkyTonk 2013-02-27 22:18:27

+0

哪個目錄是你的makefile文件的,源代碼在哪裏?你在使用GNU make還是不同的make? @ Simon-Boudrias的編輯對於GNU make,特別是第一個makefile並不是真的有意義...... – 2013-02-28 10:32:24

+0

這是OPUS MAKE。生成文件位於源目錄中,輸出目錄「lintfiles」也位於同一目錄中。 – 2013-02-28 17:23:10

回答

0

我不熟悉PC的皮棉,但如果語法是一樣的東西

lint-nt -o abc.lint abc.cpp 

那麼這個Makefile應該做的工作:

SRC_DIR := srC# or whatever 
SRCS := $(wildcard $(SRC_DIR)/*.cpp) 
LINTS := $(patsubst $(SRC_DIR)/%.cpp, $(SRC_DIR)/lint/%.lint, $(SRCS)) 

all: $(LINTS) 

$(LINTS): $(SRC_DIR)/lint/%.lint : $(SRC_DIR)/%.cpp 
    lint-nt $(PATHS) $(OPTIONS) -o [email protected] $< 
+0

獲取以下錯誤 OPUS MAKE:makefile(第59行):依賴行上沒有目標。停止。 。 上線$(絨毛):$(SRC_DIR)/ lintfiles/TXT%:$(SRC_DIR)/ CPP%的Opus – 2013-02-28 17:23:32

+0

做是一個專有的工具;我不熟悉它,我找不到一本好的手冊。我給的makefile是GNU Make(事實上的標準)。 – Beta 2013-03-03 15:27:42