我有main.cpp
依赖的多个文件。我的main.cpp
文件中包含int main() {...}
。目前,我的编译main.cpp
的命令如下所示:
g++ main.cpp src_file1.cpp src_file1.cpp header.h ...
这将生成a.out
。我不想将此文件命名为a.out
。我要控制主要可执行文件的文件名。我尝试使用此命令来这样做:
g++ main.cpp src_file1.cpp src_file1.cpp header.h ... -o main.out
但是,当我运行它时,出现错误:
error: cannot specify -o when generating multiple output files
我知道为什么会这样,但是我不知道如何解决。当然,我仍然希望g ++编译头文件和其他c ++文件,但是我希望将主文件main.cpp
编译为main.out
而不是a.out
。我该怎么办?
相关的生成文件代码(如果需要):
SRC = block.cpp list.cpp blocker.cpp hasher.cpp header.h
CFLAGS = -g -Wall
CC = g++
STD = -std=c++11
ARGON = argon2/libargon2.a
TARGET = main.out
main: main.cpp $(SRC) argon2/argon2.h
$(CC) main.cpp $(SRC) $(ARGON) $(CFLAGS) $(STD) $(TARGET)
答案 0 :(得分:2)
不要将头文件传递给编译器,就好像它们是源文件一样。试试这个:
SRC = block.cpp list.cpp blocker.cpp hasher.cpp
ARGON = argon2/libargon2.a
TARGET = main.out
main: main.cpp $(SRC) argon2/argon2.h header.h
$(CC) main.cpp $(SRC) $(ARGON) $(CFLAGS) $(STD) -o $(TARGET)