20

我正在尝试与构建过程分开编译单个 .cpp 文件。

如果我进行完整构建,那么编译步骤将输出到创建项目时配置的目录。

但是,如果我只是要求进行编译,我最终会得到目标文件与源文件相同的目录,更糟糕的是,它会继续并将目标文件链接到可执行文件,而当它应该进行编译时。

注意我正在为 C++11 使用 clang++ 进行编译,但我认为这并没有限制它为什么第二次调用 Clang++.exe 来进行未请求的链接。

编辑1

在构建它时会这样做

-------------- Build: Debug in GOTW (compiler: GNU GCC Compiler)---------------

clang++.exe -Wall -fexceptions  -g  -std=c++11 -stdlib=libstdc++    -c                
C:\Work\test\2010\C++11\CLang\GOTW\gotw.cpp -o obj\Debug\GOTW.o
clang++.exe  -o bin\Debug\GOTW.exe obj\Debug\GOTW.o    
Output size is 203.50 KB
Process terminated with status 0 (0 minutes, 11 seconds)
0 errors, 6 warnings (0 minutes, 11 seconds)

然而,当Compile Current File执行它时,它会这样做:

clang++.exe -std=c++11 -stdlib=libstdc++    -c GOTW.cpp -o GOTW.o
1 warning generated.
clang++.exe  -o GOTW.exe GOTW.o   

我不明白为什么它输出第二步,以及如何让它像构建一样使用 obj 和 bin 目录

4

2 回答 2

22

使用该-c选项。

-C

运行上述所有程序,加上汇编程序,生成目标“.o”目标文件。

于 2013-05-22T17:13:46.710 回答
3

g++ -c *.cpp 将 .cpp 编译成 .o

于 2013-05-22T17:15:34.027 回答