空白和makefile

Adr*_* A. 4 c++ makefile compilation g++ gnu-make

我试图用白色空间编译一个项目到路径目录.在这里你有我的Makefile:

NAME    =       ./Release/Online_pricer

SRCS    =       ./Online_pricer/main.cpp                        \
                ./Online_pricer/Currency.cpp                    \
                ./Online_pricer/Curve.cpp                       \
                ./Online_pricer/Environment.cpp                 \
                ./Online_pricer/My_convert.cpp                  \
                ./Online_pricer/My_exception.cpp                \
                ./Online_pricer/ParserTab.cpp                   \
                ./Online_pricer/Spot.cpp                        \
                ./Online_pricer/Volatility.cpp                  \
                ./Online_pricer/VolatilityCapFloor.cpp          \
                ./Online_pricer/VolatilitySwaption.cpp          \
                ../Files\\ cpp/Functions.cpp                    \
                ../Files\\ cpp/UtilitiesWeb.cpp

#####################################################                                          

OBJS                    =       $(SRCS:.cpp=.o)
CC                      =       g++
RM                      =       rm -f
CFLAGS                  =       -g -W -Wall -Werror
INCL                    =       ../Files\ .h/

#####################################################                                          

$(NAME) :       $(OBJS)
        @$(CC) $(OBJS) -I$(INCL) $(LIB) -o $(NAME)
        @printf "\n \033[33m[Message]\033[39m Compilation under Linux done\n"

.cpp.o  :
        @$(CC) -I$(INCL) $(CFLAGS) -c $< -o $@
        @printf " \033[34m[Compilation]\033[39m %s\n" $<

re      :       fclean all

all     :       $(NAME)

clean   :
        @$(RM) *~ $(OBJS)
        @printf " \033[31m[Delete] \033[39m%s\n" $(OBJS)

fclean  :       clean
        @$(RM) $(NAME)
        @printf "\n \033[31m[Delete] \033[39m%s\n" $(NAME)
Run Code Online (Sandbox Code Playgroud)

当我启动"make re"时,我有这样的结果:

make: *** No rule to make target `../Files\', needed by `Release/Online_pricer'.  Stop.
Run Code Online (Sandbox Code Playgroud)

我没有成功解决带有空格的目录的这个问题.目录的名称是Files cpp.

任何人都可以帮助我PLZ?

编辑:我尝试一个\,它不起作用.我有这个结果:

g++: error: ../Files: No such file or directory
g++: error: cpp/Functions.cpp: No such file or directory
g++: error: cpp/Functions.o: No such file or directory
g++: fatal error: no input files
compilation terminated.
make: *** [../Files cpp/Functions.o] Error 4
Run Code Online (Sandbox Code Playgroud)

小智 7

正如Tio Pepe建议的那样,你应该只创建一个符号链接到该目录ln -s Files\ cpp Files_cpp(以及任何其他带空格的文件)并Files_cpp在你的Makefile中使用,你将节省无数小时试图找出make句柄空间的方法.

是的,那些双重反击是正确的但后来使用$(SRCS:.cpp=.o)并且$(OBJS)只会在不考虑空间的情况下拧紧路径.正如这个页面所指出的那样,你必须对这些路径进行解码和编码 - 我试图在一个简单的例子中每次都失败了,所以让我告诉你 - 你最好不要处理空间在路径中.重命名目录或使用不带空格的符号链接.