【问题标题】:Compiling cpp files in one directory into another directory将一个目录中的cpp文件编译到另一个目录中
【发布时间】:2013-02-19 12:03:16
【问题描述】:

尝试将名为 P18298_ca.sub 的文件夹中的所有 .cc 文件编译为 P18298_ca.cmp 中的 .exe 文件。我从包含源目录和目标目录的目录中使用 make 命令进行编译。使错误读取:

make: * 没有规则来制作目标P18298_ca.cmp/00a5bffb6a4792d7bcaed90ff6d3ca88-WA.exe', needed bymain.exe'。停下来。

这是我使用的makefile代码

    CPP_FILES := $(wildcard P18298_ca.sub/*.cc)
    OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.exe,$(CPP_FILES))
    LD_FLAGS := ...
    CC_FLAGS := ...

    main.exe: $(OBJ_FILES)
        g++ $(LD_FLAGS) -o $@ $^

    obj/%.exe: src/%.cc
        g++ $(CC_FLAGS) -c -o $@ $<

【问题讨论】:

    标签: linux compilation makefile gnu-make


    【解决方案1】:

    二进制文件是从 *.obj 文件构建的,而不是从 *.exe 文件构建的。此外,宏中的目录和默认规则必须相同。将 Makefile 中的这些行更改为

    OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.obj,$(CPP_FILES))
    
    P18298_ca.cmp/%.obj: P18298_ca.sub/%.cc
        g++ $(CC_FLAGS) -c -o $@ $<
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2012-02-15
      • 1970-01-01
      • 2021-02-15
      • 2010-11-11
      • 1970-01-01
      相关资源
      最近更新 更多