gpt4 book ai didi

c++ - 空格和 makefile

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:06 26 4
gpt4 key购买 nike

我正在尝试将带有空格的项目编译到路径目录中。这里有我的 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)

当我启动“make re”时,我得到了这个结果:

make: *** No rule to make target `../Files\', needed by `Release/Online_pricer'.  Stop.

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

谁能帮帮我?

编辑:我尝试使用一个 \ 但它不起作用。我得到了这个结果:

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

最佳答案

正如 Tio Pepe 建议的那样,您应该只创建一个指向该目录的符号链接(symbolic link) ln -s Files\cpp Files_cpp(以及任何其他带空格的文件)并使用 Files_cpp在您的 Makefile 中,您将节省无数小时试图弄清楚 make 如何处理空格的时间。

是的,那些双反斜杠是正确的,但以后使用 $(SRCS:.cpp=.o)$(OBJS) 只会破坏路径关于空间。作为this page指出,你必须对路径进行解码和编码——我在一个简单的例子中尝试过这样做,但每次都惨遭失败,所以让我告诉你——你最好不必处理路径中的空格全部。重命名目录或使用不带空格的符号链接(symbolic link)。

关于c++ - 空格和 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com