我有一个生成可执行文件“提交”的makefile,我想通过键入“ submission [arguments]”而不是“ ./submission [arguments]”来运行此文件,如果可能的话,该怎么办?
CXX = g++
CXXFLAGS= -g -std=c++11 -Wall -pedantic
CODE_SRC = code.cpp
CODE_OBJ = code.o
code: $(CODE_OBJ)
$(CXX) -o submission $(CXXFLAGS) $(CODE_OBJ) -lm
@echo "-----------DONE -------------"
.cc.o:
$(CC) $(CFLAGS) -c $*.cpp
clean:
rm -f *.o submission
clobber:
rm -f *.o
答案 0 :(得分:1)
我想通过键入
submission [arguments]
来运行此文件。
如果您修改了一个规则并添加了另一个规则,则可以使用make run_submission
运行它:
submission: $(CODE_OBJ) # Uses correct target name.
$(CXX) -o $@ $(CXXFLAGS) $(CODE_OBJ) -lm
run_submission: submission # Builds submission first.
./submission <args>
.PHONY: clean clobber run_submission
答案 1 :(得分:1)
这与Makefile
无关,但与您的Shell如何确定您可能要运行的程序有关。当您运行诸如ls
之类的命令时,shell会由于PATH
环境变量而知道此程序在哪里。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
因此,在这种情况下,我的ls
程序必须位于以下目录之一:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
如果它不在这些目录之一中,则我必须做你要做的事情并指定它的路径。
就我而言:
$ /bin/ls
在您的情况下,您的程序不在PATH
中,因此您需要指定它所在的位置,即您的当前目录(即./
的意思)。
如果要在不指定路径的情况下运行该程序,则需要将程序放在PATH
中的目录中。通常,您可能不想将随机可执行文件拖放到默认目录之一中。相反,您可以将新目录添加到PATH
。
在您的~/.bashrc
或~/.bash_profile
中,添加以下行:
export PATH="~/bin:$PATH"
您可以使用任意路径替换~/bin
,但我通常希望为自己的可执行文件放一个位置。然后,您需要将可执行文件放入该目录(如果它与已经存在的目录不同)。您需要重新打开终端以更新PATH
。之后,您应该能够按预期运行程序。
趣闻:将./
添加到PATH
中将使您可以在没有可执行文件路径的情况下运行可执行文件,无论它们位于您当前所在的目录中!