我真的很想看看LISP的GNU手冊,但我似乎並沒有看到變量系統是如何工作的或者如何解決這個惱人的問題。每次我想爲這門課程編譯一個C++項目時,我都必須引用所提供的Makefile,但這意味着我需要將Makefile複製到每個單個項目中......我真的很想要一種方法來獲得Makefile和cpplint.py文件(我必須滿足的一種樣式檢查器)放在一個目錄中,我可以在任何地方引用,而不必在每個項目文件夾中都有兩個副本。有人請,請幫助我。我可憐的SSD不值得這樣;(如何在多個項目中使用單個生成文件(以及cpplint.py的一個版本)?
我提供了下面的生成文件代碼
have_lint = $(通配符cpplint.py)
上面的線是一個我知道我需要的。更改爲至少能夠將cpplint文件放到一個目錄中,但是如何更改此設置?我嘗試了通配符../ maker_directory/cpplint.py但這不起作用...
# Makefile for use with emacs and emacs's flymake mode
# Copyright (C) [email protected]
#
# From emacs menu select Tools->compile
# To compile one file use the syntax:
# make SRC=hello.cpp
# The compile many files use the syntax (change my_exe_name below):
# make many EXE=my_exe_name
#
.PHONY: check-syntax all clean style many style-many
CXX=icpc
CXXFLAGS=-Wall -g -Wextra -std=c++11
LIBS=
DEF_LIBS=-lm -lpthread
# Target exectuable name if SRC is defined
ifdef SRC
OBJ=$(patsubst %.cpp, %.o, $(SRC))
EXE=$(patsubst %.cpp, %, $(SRC))
endif
# Variables to conditionally download cpplint.py
have_lint=$(wildcard cpplint.py)
ifneq ('$(have_lint)', 'cpplint.py')
WGET=get-lint
endif
all: build style
build: $(SRC)
ifeq (,$(findstring .h, $(SRC)))
\t $(CXX) $(CXXFLAGS) $(SRC) -o $(EXE) $(LIBS) $(DEF_LIBS)
endif
compile: $(SRC)
ifeq (,$(findstring .h, $(SRC)))
\t $(CXX) -c $(CXXFLAGS) $(SRC) -o $(OBJ) $(LIBS) $(DEF_LIBS)
endif
check-syntax:
\t $(CXX) $(CXXFLAGS) -fsyntax-only $(CHK_SOURCES)
style: $(WGET)
\t ./cpplint.py $(SRC)
get-lint:
\t wget -q http://pc2lab.cec.miamiOH.edu/documents/cpplint.py
\t chmod +x cpplint.py
many: compile-many style-many
compile-many:
ifndef EXE
\t @echo Specify target executable name via command-line EXE=your_exe_name
\t @exit 2
endif
\t $(CXX) $(CXXFLAGS) *.cpp -o $(EXE) $(LIBS) $(DEF_LIBS)
style-many: $(WGET)
\t $(eval SRCS:=$(wildcard *.h *.cpp))
\t ./cpplint.py $(SRCS) || echo done
我可能在這裏錯過了一些東西,但這與Lisp有什麼關係?我看到一堆關於Makefiles的內容,還有一些關於python的內容,但Lisp是如何介入的?標題似乎並不涉及這個問題;這使得這個問題不清楚...... – 2014-12-07 13:00:08
在Linux Makefiles使用Lisp編碼。順便謝謝你的回答。 – patrickjp93 2015-05-15 02:11:44
在這裏,我錯過了lisp的另一個含義嗎?你顯示的makefile不是用lisp寫的... – 2015-05-15 11:09:33