草庐IT

c++ - 空格和 makefile

coder 2024-02-17 原文

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

有关c++ - 空格和 makefile的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  3. ruby - ruby 乘法语句中星号中断语法前的空格 - 2

    在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl

  4. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  5. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  6. += 的 Ruby 方法 - 2

    有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=

  7. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  8. ruby - 将 Ruby 中的字符串切成固定长度的字符串,忽略(不考虑/不管)新行或空格字符 - 2

    我有一个包含许多换行符和空格的字符串。我需要将它拆分成固定长度的子字符串。例如a="Thisissome\nText\nThisissometext"现在我想把它分成长度为17的字符串。所以现在它应该导致["Thisissome\nText","\nThisissometex","t"]评论:我的字符串可能包含任何字符(空格/单词等) 最佳答案 "Thisissome\nText\nThisissometext".scan(/.{1,17}/m)#=>["Thisissome\nText","\nThisissometex","t"

  9. ruby - Ruby 中字符串运算符 + 和 << 的区别 - 2

    我是Ruby和这个网站的新手。下面两个函数是不同的,一个在函数外修改变量,一个不修改。defm1(x)x我想确保我理解正确-当调用m1时,对str的引用被复制并传递给将其视为x的函数。运算符当调用m2时,对str的引用被复制并传递给将其视为x的函数。运算符+创建一个新字符串,赋值x=x+"4"只是将x重定向到新字符串,而原始str变量保持不变。对吧?谢谢 最佳答案 String#+::str+other_str→new_strConcatenation—ReturnsanewStringcontainingother_strconc

  10. ruby - 至少 2 个空格的正则表达式? - 2

    我需要忽略任何一个空格,并且应该匹配至少大于一个空格的空格..."MARYHADALITTLELAMB"我希望"MARY","HADALITTLE","LAMB" 最佳答案 空格匹配是\s,您可以在花括号中提供最小值和最大值。您也可以省略其中任何一个,如下所示:\s{2,}所以你的代码应该是这样的:"MARYHADALITTLELAMB".split(/\s{2,}/)Youcantestitonlinehere! 关于ruby-至少2个空格的正则表达式?,我们在StackOverflo

随机推荐