相关疑难解决方法(0)

禁止make规则错误输出

我有一个创建目录的规则

bin:
    -mkdir $@
Run Code Online (Sandbox Code Playgroud)

但是,在第一次生成目录后,我收到此输出:

mkdir bin
mkdir: cannot create directory `bin': File exists
make: [bin] Error 1 (ignored)
Run Code Online (Sandbox Code Playgroud)

是否有某些方法我只能在目录不存在时运行规则,或者在目录已存在时禁止输出?

makefile gnu-make

11
推荐指数
3
解决办法
1万
查看次数

Makefiile有很多旗帜

我试图了解Makefile应该是什么样子,当涉及到标志,尤其是链接标志时.这是我的Makefile:

OBJS    = n.o
SOURCE  = n.cpp
# HEADER = there are no header files, so I commented that
OUT     =       test
CXX     = ../mpich-install/bin/mpic++
FLAGS   =       -I../intel/mkl/include  ../intel/mkl/lib/intel64/libmkl_scalapack_ilp64.a       -Wl,--start-group       ../intel/mkl/lib/intel64/libmkl_intel_ilp64.a ../intel/mkl/lib/intel64/libmkl_core.a  ../intel/mkl/lib/intel64/libmkl_sequential.a    -Wl,--end-group ../intel/mkl/lib/intel64/libmkl_blacs_intelmpi_ilp64.a -lpthread       -lm     -ldl

all: $(OBJS)
        $(CXX)  $(OBJS) -o $(OUT)       $(FLAGS)

# create/compile the individual files >>separately<<
n.o:    n.cpp
        $(CXX)  -c      n.cpp   $(FLAGS)

.PHONY : all
# clean house
clean:
        rm -f $(OBJS)
Run Code Online (Sandbox Code Playgroud)

然后我得到:

../mpich-install/bin/mpic++     -c      n.cpp   -I../intel/mkl/include  ../intel/mkl/lib/intel64/libmkl_scalapack_ilp64.a       -Wl,--start-group       ../intel/mkl/lib/intel64/libmkl_intel_ilp64.a   ../intel/mkl/lib/intel64/libmkl_core.a  ../intel/mkl/lib/intel64/libmkl_sequential.a    -Wl,--end-group ../intel/mkl/lib/intel64/libmkl_blacs_intelmpi_ilp64.a  -lpthread …
Run Code Online (Sandbox Code Playgroud)

c++ linux linker makefile intel-mkl

5
推荐指数
1
解决办法
152
查看次数

标签 统计

makefile ×2

c++ ×1

gnu-make ×1

intel-mkl ×1

linker ×1

linux ×1