【问题标题】:Compile all .cpp files to one executable?将所有 .cpp 文件编译为一个可执行文件?
【发布时间】:2015-11-14 17:50:16
【问题描述】:

这是我项目的目录:
根目录/顶层目录:

11/05/2015  05:59 PM    <DIR>          .
11/05/2015  05:59 PM    <DIR>          ..
11/05/2015  05:59 PM    <DIR>          .git
11/04/2015  11:09 PM                35 Makefile
11/05/2015  05:59 PM               215 README.md
11/04/2015  10:56 PM    <DIR>          src
               2 File(s)            250 bytes
               4 Dir(s)  405,634,633,728 bytes free

src 的内容:

11/04/2015  10:56 PM    <DIR>          .
11/04/2015  10:56 PM    <DIR>          ..
11/04/2015  10:56 PM                74 headers.h
11/04/2015  11:02 PM               386 shell.cpp
               2 File(s)            460 bytes
               2 Dir(s)  405,634,633,728 bytes free

所以,src 目录中有 2 个文件。 shell.cppheaders.h。在 makefile 中,我想将 src 目录中的两个文件编译为一个二进制可执行文件。如果需要,我会先编译成 .o 文件,然后再将 .o 文件编译成二进制文件。

另外,我使用 cygwin,对于我的版本,我不能使用 gmake。所以,请给我一个需要正常make的解决方案。

【问题讨论】:

  • 您是否知道 headers.h 很可能包含在 shell.cpp => 只有一个要编译的文件,并且您有一个 makefile?除此之外,编译两个(cpp)文件究竟有什么问题?
  • 你试过man gcc吗?

标签: c++ makefile cygwin


【解决方案1】:
.PHONY: all clean

BIN = ../exe
CXX = g++5
CFLAGS  = -Wall -Og -g3 -ggdb -pipe -march=i686 -std=c++17

CPP=FILES.cpp

all: $(BIN)

clean:
    @echo Delete .obj files
    @rm -f *.o

%.o: %.cpp
    @echo Compiling $*
    @$(CXX) $(CFLAGS) -c $^ -o $@

$(BIN): $(CPP:%.cpp=%.o)
    @echo Link executable
    @$(CXX) $(CFLAGS) -o $(BIN)

安装 gmake

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多